【PAT】1009. 说反话 (20)

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 }

猜你喜欢

转载自www.cnblogs.com/pgzhang/p/8931638.html