PTA 说反话加强版

问题描述:

输入:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。
字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。*/
输出:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入:Hello World Here I Come
输出:Come I Here World Hello

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h> 
 4 int main() {
 5     char str[500010];
 6     int len,real,head,count=0; 
 7     int i,j,k;
 8     gets(str);    //gets只有遇到回车才停止输入;而scanf遇到回车和空格都停止输入;
 9     len=strlen(str);    //len用来存储字符串长度; 
10     for(i=len-1;i>=0;i--)    //从后往前进行
11     {
12         if(str[i]!=' ')
13         {
14             real=i;    //记录单词最后一个字母的位置 
15             
16             for(j=i-1;j>=0;j--)
17             {
18                 if(str[j]==' ')    //向前遍历,遇到空格停下来 
19                 {
20                     break;                                                                                                                       
21                 }  
22             } 
23              
24             head=j;    //指向空格的下一个空间,即单词的第一个字母
25             if(count>0) //如果不是输出第一个单词,即原字符串最后一个单词,要输出一个相隔的空格
26             {
27                 printf(" ");
28             } 
29             
30             for(k=head; k<=real; k++)//从该单词的开头字符逐个输出到末尾字符
31             {
32                 printf("%c", str[k]);
33             }
34             count++;                                                                     
35             i=j;    //从遇到的空格那个位置开始,继续向前查询 
36         }
37     } 
38     return 0;
39 }

 

posted @ 2021-03-29 20:02  弈星  阅读(211)  评论(0)    收藏  举报