给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
#include<stdio.h> #include<string.h> int main(){ char ch[500001];//如果是用char *ch定义一定要用malloc函数申请空间 ch = (char*)malloc(sizeof(ch)); int flag = 0; gets(ch); int l = strlen(ch)-1; int x = 0; while(l){ if(ch[l]!=' ') x++; else{ ch[l] = '\0'; if(x) {if(flag) putchar(' '); printf("%s",ch+l+1);//ch+x 即可以输入ch【x】直到'\0'出现的所有字符 而ch【x】只能输出一个字符串 x = 0; flag = 1;} } l--; } if(x&&flag) putchar(' '); if(x) printf("%s",ch); printf("\n"); return 0; }
这道题其实并不用改变数组的结构 刚开始我总想改变数组来做 在网上搜了别人的代码发现不需要改变数组 只要从后向前输出就好