1009 说反话(类似回文字符串)

题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960                       1009 说反话 (20 分)  

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

思路:取自胡凡的《算法笔记》

 1 #include <stdio.h>
 2 #include <cstring>
 3 int main()
 4 {
 5     char s[266];
 6     gets(s);
 7 
 8     char s2[80][80];
 9     int r = 0, c = 0;
10 
11     int len = strlen(s);
12     for (int i = 0; i <= len; i++)
13     {
14         if (s[i] != ' ')
15             s2[r][c++] = s[i];
16         else
17         {
18             s2[r][c] = '\0';    //给每个单词后面添加'\0'
19             r++;
20             c = 0;
21         }
22 
23     }
24 
25     //r是最后一个单词的下标,因为最后一个单词读取的时候并没有使r++;
26 
27     for (int i = r; i >= 0; i--)
28     {
29         printf("%s", s2[i]);
30         if (i != 0)
31             printf(" ");
32         else
33             printf("\n");
34     }
35 
36 
37     return 0;
38 }

 

法二:

1009 说反话(类似回文字符串)

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char str[80][80];
 6     int i = 0;
 7     while (scanf("%s", str[i]) != EOF)
 8         i++;
 9 
10     for (int j = i - 1; j >= 0; j--)
11     {
12         printf("%s", str[j]);
13         if (j == 0)
14             printf("\n");
15         else
16             printf(" ");
17     }
18 
19     return 0;
20 }

 

上一篇:1009 说反话 两种解法 gets()函数的替换


下一篇:探究A和A& 类型到底是啥意思,没做解析,勿进