C++:编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
时间: 2024-01-29 08:44:32 浏览: 77
下面是一个简单的 C 代码实现:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 输入行的最大长度
void reverseWords(char* s) {
// 翻转整个字符串
int len = strlen(s);
int i = 0, j = len - 1;
while (i < j) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
i++;
j--;
}
// 翻转每个单词
i = 0;
while (i < len) {
while (i < len && s[i] == ' ') i++; // 跳过空格
j = i + 1;
while (j < len && s[j] != ' ') j++; // 找到下一个空格
int l = i, r = j - 1;
while (l < r) { // 翻转当前单词
char tmp = s[l];
s[l] = s[r];
s[r] = tmp;
l++;
r--;
}
i = j + 1;
}
}
int main() {
char s[MAX_LEN];
fgets(s, MAX_LEN, stdin); // 读入一行字符串
reverseWords(s);
printf("%s\n", s);
return 0;
}
```
该程序使用 `fgets` 函数读入一行字符串,然后调用 `reverseWords` 函数翻转每个单词和整个字符串,最后输出结果。其中,翻转单词的过程是先跳过空格,找到下一个空格,然后翻转当前单词,再继续寻找下一个单词直到字符串末尾。
阅读全文