编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
I am a student
student a am I
本题属于字符串问题,运用字符串数组加上有循环控制就可以解题了。在一些重要的地方,我会在代码的后面加上注释,若有问题或有更好的解法欢迎提建议多加交流。
下面附上c语言版的ac代码。
#include<stdio.h> #include<string.h> int main() { char a[10000]; int l,i,t,j; gets(a); l=strlen(a); t=l;//把l赋值给t for(i=l-1;i>=0;i--)//从字符串的最后进行遍历 { if(a[i]==' ')//当遇到的字符为空格时 { for(j=i+1;j<=t-1;j++)//从空格的后面一个字符遍历到第t-1个字符 { printf("%c",a[j]);//把字符打印出来 } printf(" ");//打印出空格来 t=i;//如果a[i]字符为空格时把第i个位置赋值给t } } for(j=0;j<=t-1;j++)//这是个特殊情况,因为第一个字符不可能为空格所以上面的情况不符合,所以从第一个字符打印到第一个空格之前的字符 printf("%c",a[j]); return 0; }