(乙)1009 说反话 (20 分)

📅 2026/7/28 13:56:58
(乙)1009 说反话 (20 分)
题目给定一句英语要求你编写程序将句中所有单词的顺序颠倒输出。输入格式测试输入包含一个测试用例在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成其中单词是由英文字母大小写有区分组成的字符串单词之间用 1 个空格分开输入保证句子末尾没有多余的空格。输出格式每个测试用例的输出占一行输出倒序后的句子。输入样例Hello World Here I Come输出样例Come I Here World Hello思路这道题的要求是把单词的位置完全颠倒过来那么我们就要把单词给取出来然后再把单词的顺序进行反转。单词的分割是空格符号。我在这一句话的首尾各添加了一个空格符方便了单词的分割。代码如下#includestdio.h #includestring.h char a[100];//各处的例句 char b[100];//单词转换后的句子 char c[100];//为了方便单词分割自己处理后的例句 int s0; void qq(int x,int y)//单词位置的转换 { for(int iy; ix; i) { b[s]c[i]; } } int main() { memset(a,0,sizeof a); memset(b,0,sizeof b); gets(a);//注意输入 int lstrlen(a); int i,j; a[l] ;//尾位置添加了一个空格 c[0] ;//首位置添加了一个空格 for(i0; il; i)//把例句复制 c[i1]a[i]; for(il1; i0; i--)//经过预处理每一个单词的前后都是空格符 { if(c[i] ) { for(ji-1; j0; j--) { if(c[j] ||j0) { break; } } qq(i,j);//截取到单词的具体位置后把单词的位置进行转换 ij1; } } for(i1; il1; i)//注意输出时过滤掉第一位的空格符 printf(%c,b[i]); printf(\n); return 0; }