给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:Hello World Here I Come输出样例:
Come I Here World Hello
思路:
1、得到字符串,注意,不可简单使用scanf,因为scanf遇到 空格就停止,此处应该使用的是gets,遇到回车结束
2、获取字符串长度,并设置一个变量,记录每个单词的结束,从后往前读,遇到空格,从此处向后读,读一个单词,并输出空格
3、读到头之后,输出最后一个单词。
代码如下:
#include <iostream>
#include<cstdio>
#include <cstring>
#define MaxSize 10000
using namespace std;
int main()
{
int length,last;
char word[MaxSize];
gets(word);
length=strlen(word);
last=length;
for(int i=length-1;i>=0;i--)
{
if(word[i]==' ')
{
for(int j=i+1;j<last;j++)
printf("%c",word[j]);
printf(" ");
last=i;
}
if(i==0)
{
for(int j=0;j<last;j++)
printf("%c",word[j]);
}
}
return 0;
}