给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
#include <stdio.h>
#include <string.h>
int main()
{
char str[81], ch; //ch是输入的字符串,str是用来保存所输入字符的字符数组;
int space[81]; //保存空格位置;
int i, j, num_str, num_space;
i=j=0;
while( (ch = getchar()) != '\n')
{
str[i] = ch;
if(ch == ' ')
{
space[j] = i;
j++; //j是空格个数
}
i++; //i是字符的个数
}
str[i] = '\0';
num_str = i;
num_space = j;
if(num_space == 0)
{
printf("%s", str);
}
else
{
//输出最后一个单词
for(i = space[num_space-1] + 1; i < num_str; i++)
{
putchar(str[i]);
}
putchar(' ');
//输出中间的单词
for(j = num_space - 2; j >= 0; j--)
{
for(i = space[j] + 1; i < space[j+1]; i++)
{
putchar(str[i]);
}
putchar(' ');
}
//输出第一个单词
for(i = 0; i < space[0]; i++)
{
putchar(str[i]);
}
putchar('\n');
}
return 0;
}
PAT刷题笔记,侵权删