给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
注意:PTA不能用gets,只能用fgets,PTA经常出现格式错误,最后一个字符后是‘\0’
思路:用递归法,以空格为分界,即可很好处理,
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int solve(char str[],int i,int f);
int main( )
{
char str[100];
fgets(str,100,stdin);
solve(str,0,1);
return 0;
}
int solve(char str[],int i,int f)
{
if(str[i]=='\0')//递归结束标志
return 0;
int j;
for(j=i+1;str[j]!=' '&&str[j]!='\0';j++);//统计到下一个空格前有几个字符 ,i是空格,i+1是字符
solve(str,j,0);//递归,调用本身
for(i;i<j;i++)//输出结果
{
if(str[i]!=' '&&str[i]!='\n')
printf("%c",str[i]);
}
//字符间有空格,末尾有字符串结束标志
if(f)
printf("\0");
else
printf(" ");
return 0;
}