/*==================================================
单词倒排
总时间限制: 1000ms 内存限制: 65536kB
描述
编写程序,读入一段英文(英文中不包含标点),
将所有单词的顺序倒排并输出,其中单词以空格分隔。
输入
输入为一个字符串(字符串长度最大为100)
输出
输出为按要求排续后的字符串
样例输入
I am a student
样例输出
student a am I
注:这个代码是覃宗华写的。
====================================================*/
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 int main()
6 {
7 char a[500] = {0};
8 int n, i, j;
9 freopen("5.in","r",stdin);
10 while(gets(a))
11 {
12 n = strlen(a);
13 for(i=n-1;i>=0;i--)
14 {
15 if(a[i]==' ')
16 {
17 for(j=i+1;a[j]!=' '&&a[j]!='\0';j++)
18 cout<< a[j];
19 cout<<" ";
20 }
21 }
22 for(i=0;a[i]!=' '&&a[i]!='\0';i++)
23 cout<<a[i];
24 cout << endl;
25 }
26 return 0;
27 }
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 char a[500],temp,b[100];//a数组存贮整个句子,b存储某一个单词
6 int i,len,j,k;
7 gets(a);
8 len=strlen(a);
9 for(i=0;i<len/2;i++)//对整个字符串进行翻转
10 {
11 temp=a[i];
12 a[i]=a[len-1-i];
13 a[len-1-i]=temp;
14 }
15 //printf("\n%s\n",a);
16 i=0;
17 j=0;
18 while(a[i]!='\0')
19 {
20 if(a[i]!=' ')
21 {//扫描句子,遇到非空格字符则存到b数组
22 b[j]=a[i];
23 j++;
24 }
25 else
26 {//扫描句子时遇到空格,逆向输出b数组存贮的那个被逆序的单词
27 for(k=j-1;k>=0;k--)
28 {
29 printf("%c",b[k]);
30 }
31 printf(" ");
32 j=0;
33 }
34 i++;
35 }/**/
36 for(k=j-1;k>=0;k--)//最后一个单词需要单独处理
37 {
38 printf("%c",b[k]);
39 }
40 printf("\n");
41 return 0;
42 }
转载于:https://www.cnblogs.com/huashanqingzhu/p/3500465.html