题目:
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
经验总结
题目还是比较简单的。
输入字符串之后从后向前遍历,找到一个空格就输出这个空格后面的一个单词。注意最后一个单词后没有空格直接换行。
最开始提交的时候用的gets,一直显示编译错误。后来查到说,选择c语言提交可以用gets,如果用c++可以换成getline,只是字符串的定义要用string而不是char。且getline的用法需要注意是:getline(cin,string)
AC代码
#include<iostream>
#include"stdio.h"
#include"math.h"
#include"string.h"
using namespace std;
int main(){
string s;
int l,i,j,r;
while(getline(cin,s))
{
//cout<<s<<endl;
l=s.size();
j=l-1;
for(i=j;i>=0;i--){
if(s[i]==' '){
for(r=i+1;r<=j;r++){
cout<<s[r];
}
cout<<" ";
j=i-1;
}
if(i==0){
for(r=0;r<=j;r++){
cout<<s[r];
}
cout<<endl;
}
}
}
return 0;
}