题目要求
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式
测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式
每个测试用例的输出占一行,输出倒序后的句子。
输入样例
Hello World Here I Come
输出样例
me I Here World Hello
解题思路
从后往前,看到空格就将其输出;注意只有一个单词的情况,既没有空格。
源码
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
int main()
{
char a[1001];
int j=0,flag=0;
gets(a);
int len=strlen(a);
bool flag1 = false;
for (int i = 0;a[i] != '\0';i++) {
if (a[i] == ' ') {
flag1 = true;
break;
}
}
if (!flag1) {
cout << a << endl;
return 0;
}
for(int i=len-1;i>=0;i--)
{
if(a[i]!=' ')
{
j++;
}
if(a[i]==' ')
{
flag=1;
}
if(flag)
{
for(int q=i+1;q<=i+j;q++)
{
cout<<a[q];
}
cout<<" ";
flag=0;
j=0;
}
}
for(int i=0;a[i]!=' ';i++)
{
cout<<a[i];
}
cout<<endl;
return 0;
}