题目是给出一个字符串,例如I am a student. 要输出student. a am I
为什么我下面这段代码输出的是student. 哪里出现了问题。
#include <string.h>
int main()
{
int i,j,k,l,x;
char s[1000],str[1000];
while(gets(s)!=NULL)
{
x=strlen(s);
for(i=x,l=x,j=0;i>=0;i--)
{
if(s[i]==' '&&s[i+1]!=' ')
{
for(k=i+1;k<=l;k++)
{
str[j++]=s[k];
}
str[j++]=' ';
l=i-1;
}
else continue;
}
str[j]='\0';
printf("%s",str);
}
return 0;
}
大佬的代码有以下两个问题:
1.在 for(i=x,l=x,j=0;i>=0;i--)这个循环里,因为字符串S的下标是从0到|S|-1,所以i和l的初始值应该为x-1。
2.还是这个循环,因为第一个单词前面不一定有空格,所以运行时第一个单词不会输出。应该特殊判断边界情况。
小学五年级的蒟蒻,说得不一定全对,对的地方大佬可以参考一下。
顺序切割,倒序输出即可