/*================================================== 单词倒排 总时间限制: 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 }