用c语言给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
时间: 2023-05-30 17:03:27 浏览: 162
分析:
这道题目可以分为两个步骤:
1. 将句子中的每个单词分离出来,存储到一个数组中;
2. 依次输出数组中存储的单词,但是要按照相反的顺序输出。
解答:
```
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
void reverse_words(char *str) {
int len = strlen(str);
char words[MAX_LENGTH][MAX_LENGTH];
int word_count = 0;
int word_start = 0;
int i;
for (i = 0; i < len; i++) {
if (str[i] == ' ' || str[i] == '\n') {
int word_len = i - word_start;
strncpy(words[word_count], &str[word_start], word_len);
words[word_count][word_len] = '\0';
word_count++;
word_start = i + 1;
}
}
// 处理最后一个单词
int word_len = i - word_start;
strncpy(words[word_count], &str[word_start], word_len);
words[word_count][word_len] = '\0';
word_count++;
for (i = word_count - 1; i >= 0; i--) {
printf("%s ", words[i]);
}
}
int main() {
char str[MAX_LENGTH];
fgets(str, MAX_LENGTH, stdin);
reverse_words(str);
return 0;
}
```
首先,我们定义了一个常量 `MAX_LENGTH` 表示输入句子的最大长度,这样就可以在程序中使用这个值。
接着,我们定义了一个函数 `reverse_words`,它的参数是一个字符串,表示要颠倒单词顺序的句子。函数的作用是将句子中的每个单词分离出来,存储到一个二维字符数组中,然后按照相反的顺序输出。
具体实现过程如下:
1. 首先,我们计算出句子的长度,并定义一个二维字符数组 `words`,用于存储单词;
2. 接着,我们定义三个变量,分别记录当前单词的起始位置、单词数量和句子长度;
3. 然后,我们遍历整个句子,如果遇到空格或换行符,就说明一个单词已经结束了,我们就将这个单词复制到 `words` 数组中,并更新当前单词的起始位置和单词数量;
4. 最后,我们处理最后一个单词,并将 `words` 数组中的单词按照相反的顺序输出。
在 `main` 函数中,我们使用 `fgets` 函数从标准输入中读取一行字符串,并将其作为参数传递给 `reverse_words` 函数,然后程序结束。
阅读全文