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