[英]Convert the string into special string
输入:你好
输出:
奥列尔·埃里特(Olleh Ereht)
输入:
你好吗?
输出:
Woh Era?you
#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为我提供解决方案。
我认为内部的while循环永远不会终止,因为条件永远不会给出false。 为了终止循环:
s [p]!=''和s [p]!='\\ 0'都应为false。
也就是说
s [p] ==''和s [p] =='\\ 0'都应该为true,这是不可能的。
这就是为什么您会收到超过时间限制的错误的原因。
也许像这样
#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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.