给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include"string.h"
int main()
{
int flag=0,n,count=0;
char *ch;
ch=(char *)malloc(500001*sizeof(ch));/*通过malloc把较大的数组放到堆区,防止爆栈*/
gets(ch);
n=strlen(ch)-1;
while(n)
{
if(ch[n]!=' ')
count++;
else
{
ch[n]='\0';
if(count)
{
if(flag)
putchar(' ');
printf("%s",ch+n+1);
count=0;
flag=1;
}
}
n--;
}
if(flag&&count)
putchar(' ');
if(count)
printf("%s",ch);
putchar('\n');
return 0;
}