10 - 0 说反话

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

1
Hello World Here I Come

输出样例:

1
Come I Here World Hello

刚开始这题弄了很久,就是少了一个输出,后来就发现原来是条件判断不准确的原因,后来终于对了,测试4又错了,后来才发现原来是因为输入的是字符串,数组长度的问题,把80改到81就对了,这细节,题目没看清

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "stdio.h"

int main() {
char str[81] = {0};
int i = 0,j = 1,len = 1,m = 1,k = 0;
for (i = 0, j = 1; i < 81; i++, j++) {
scanf("%c", &str[i]);
if (str[i] == ' ') k++;
if (str[j - 1] == '\n') break;
}
for (len = j; len >= 0; len--) {
if (len == 0 || str[len - 1] == ' ') {
for (m = 0; m < j - len; m++) {
if (str[len + m] != '\n') printf("%c", str[len + m]);
}
j = len - 1;
if (k > 0) {
printf(" ");
k--;
}
}
}
return 0;
}