1009. 说反话 (20)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:Hello World Here I Come输出样例:
Come I Here World Hello
程序说明:
1.输入的字符串存储在数组str[]中,数组pos[]用来存储每个空格所在的位置,count用来存储单词个数,初始值为1;strlen()函数求出字符串的总长度
2.知道每个空格所在的位置、字符串总长度和单词个数即可打印出相应的单词
C++ 代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int main() { 5 char str[80]; 6 int pos[80]; 7 int count=1,j=0,i,len; 8 gets(str); 9 len=strlen(str); 10 for(i=0;i<len;i++){ 11 if(str[i]==' '){ 12 count++; 13 pos[j]=i; 14 j++; 15 } 16 } 17 if(count==1){ 18 for(i=0;i<len;i++){ 19 cout<<str[i]; 20 } 21 system("pause"); 22 return 0; 23 } 24 while(count!=1){ 25 for(i=pos[j-1]+1;i<len;i++) 26 cout<<str[i]; 27 len=pos[j-1];j--;count--; 28 if(count!=0) cout<<' '; 29 } 30 for(i=0;i<pos[0];i++) 31 cout<<str[i]; 32 system("pause"); 33 return 0; 34 }