输入: 你好
输出:
Olleh Ereht
输入:
你好吗?
输出:
Woh Era?你 #include <stdio.h>
#include <string.h>
int main()
{
char s[100], r[100];
int n, c, d=0;
int p=0,t=0;
printf("Input a string\n");
gets(s);
//n = strlen(s);
while(s[p]!= '\0'){
while(s[p]!= ' ' || s[p]!= '\0'){
p++;
}
for (c = p-1; c >= t; c--, d++)
r[d] = s[c];
r[d++] = ' ';
// printf("%s\n", r);
t=p;
p++;
}
r[d]= '\0';
printf("%s\n", r);
return 0;
}
我的时间限制超出问题..不知道我哪里出错了.Plz帮我解决了问题。
答案 0 :(得分:1)
我认为内部while循环永远不会终止,因为条件永远不会给出错误。 要终止循环:
s [p]!=''和 s [p]!='\ 0'两者都应该为假。
也就是说
s [p] ==''和 s [p] =='\ 0'两者都应该为真,这是不可能的。
这就是为什么你得到超出时间限制的错误。
答案 1 :(得分:0)
也许就像这样
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void){
char s[100], r[100];
int p = 0, d = -1;
printf("Input a string\n");
scanf("%99[^\n]", s);//gets(s);<-- "gets" already was obsolete.
while(1){
if(s[p] != ' ' && s[p] != '\0'){
r[++d] = s[p];
} else {
if(d >= 0){
putchar(toupper(r[d--]));
while(d >= 0){
putchar(tolower(r[d--]));
}
}
if(s[p] == ' ')
putchar(' ');
else
break;
}
++p;
}
return 0;
}