Openjudge-计算概论(A)-单词倒排
描述:
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
输入输入为一个字符串(字符串长度至多为100)。输出输出为按要求排续后的字符串。
样例输入
I am a student
样例输出
student a am I
思路:首先把字符串先反转,从前往后扫,遇到空格处理一下单词,要特别注意:最后一个单词不同于其他单词,要单独处理!
代码如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/3500465.html):
#include<stdio.h> #include<string.h>//记得调用库函数哦 int main() { char a[500],temp,b[100];//a数组存贮整个句子,b存储某一个单词 int i,len,j,k; gets(a); len=strlen(a); for(i=0;i<len/2;i++)//对整个字符串进行翻转 { temp=a[i]; a[i]=a[len-1-i]; a[len-1-i]=temp; } i=0; j=0; while(a[i]!='\0') { if(a[i]!=' ')//扫描句子,遇到非空格字符则存到b数组 { b[j]=a[i]; j++; } else//扫描句子时遇到空格,逆向输出b数组储存的那个被逆序的单词 { for(k=j-1;k>=0;k--) { printf("%c",b[k]); } printf(" "); j=0; } i++; } for(k=j-1;k>=0;k--)//最后一个单词需要单独处理 { printf("%c",b[k]); } printf("\n"); return 0; }
我不怕千万人阻挡,只怕自己投降…