【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 }
C++ Code 1

 

方法二:使用strtok()函数
  strtok()函数说明:
    1.包含在 #include <string.h> 中
    2.函数原型:
char* strtok (char* str,constchar* delimiters );    
    3.函数功能:以传入的 delimiters为切割符对 str 分割成一个个子串,并返回指向被分割出片段的指针。当 str 中的字符查找到末尾时,返回NULL;
     如果查不到 delimiters 所标示的字符,则返回当前 strtok 的字符串的指针
    4.函数参数:
      str:在第一次被调用的时候 str 为被切割字符串的首地址,在后面调用的时候为NULL
      delimiters:将传入的字符当做切割符
C++ 代码如下:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main(){
 5     char str[80];
 6     int flag=1;
 7     char* result;
 8     const char *ch=" ";
 9     vector<char *> word;
10     gets(str);
11     result=strtok(str,ch);
12     while(result!=NULL){
13         word.push_back(result);
14         result=strtok(NULL,ch);
15     }
16     for(int i=word.size()-1;i>=0;i--){
17         if(flag==1){
18             cout<<word[i];
19             flag=0;
20         }
21         else cout<<' '<<word[i];
22     }
23     system("pause");
24 }
C++ Code 2

 

posted on 2018-04-24 16:48  Pink.Pig  阅读(198)  评论(0编辑  收藏  举报