一、题目
描述
将一个英文语句以单词为单位逆序排放。例如I am a boy逆序排放后为boy a am I。所有单词之间用一个空格隔开。语句中除了英文字母外,不再包含其他字符。
数据范围
输入的字符串长度满足 1<=n<=1000
输入
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母
输出
得到逆序的句子
二、思路
将英文语句一次性读入,存到一个字符数组中
设置L和R变量,分别表示最后一个单词的左右边界
打印最后一个单词
调整L和R,使其分别表示倒数第二个单词的左右边界
以此类推
三、自己写的代码
#include<stdio.h>
int main() {
char line[1002];
int l, r, i;
fgets(line, 1002, stdin);
i = 0;
while (line[i] != 10 && line[i] != '\0') {
i++;
}
r = i - 1;
while (1) {
l = r;
while (line[l] != ' ' && l >= 0) {
l--;
}
if (l < 0) {
for (i = 0; i <= r; i++) {
printf("%c", line[i]);
}
break;
}
if (line[l] == ' ') {
for (i = l + 1; i <= r; i++) {
printf("%c", line[i]);
}
printf(" ");
r = l - 1;
}
}
return 0;
}