其他分享
首页 > 其他分享> > 1009 说反话 (20分)

1009 说反话 (20分)

作者:互联网

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

输入格式:

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

输出格式:

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

输入样例:

Hello World Here I Come
 

输出样例:

Come I Here World Hello

思路:
由样例可得,一个句子是以单词为单位的,因此考虑使用Vector存储每个单词,然后利用#Include<algorithm>中reverse()函数对vector进行逆序排序,再按顺序输出即可。
程序中需要注意的地方为,输入的字符串带有空格,因此一般都用getline(cin,s)来输入,而后通过一个for循环内嵌套while循环来切割字符串,切割为以单词为单位,
切割算法如下:
 1     for(int i = 0;i < str.length();) {
 2         s="";
 3         while (i < str.length() && str[i] != ' ') {
 4             s += str[i];
 5             if (str[i + 1] == ' ' || str[i + 1] == '\0'){
 6                 word.push_back(s);
 7                 i += 2;
 8                 break;
 9             }
10             i++;
11         }
12     }
程序具体代码实现如下:
 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 int main(){
 7     string str,s;
 8     vector<string> word;
 9     getline(cin, str);
10     for(int i = 0;i < str.length();) {
11         s="";
12         while (i < str.length() && str[i] != ' ') {
13             s += str[i];
14             if (str[i + 1] == ' ' || str[i + 1] == '\0'){
15                 word.push_back(s);
16                 i += 2;
17                 break;
18             }
19             i++;
20         }
21     }
22     reverse(word.begin(),word.end());
23     for(int k = 0; k < word.size(); k++){
24         cout << word[k];
25         if(k != word.size() - 1) cout << " ";
26     }
27     return 0;
28 }

 



标签:word,1009,int,单词,字符串,length,str,反话,20
来源: https://www.cnblogs.com/ClinDHU/p/13246327.html