c语言编写程序,输入一句英语,将句中所有单词的顺序颠倒输出。如输入 Hello World Here I Come则输出:Come I Here World Hello
时间: 2024-11-30 19:15:35 浏览: 8
在C语言中,你可以通过以下几个步骤实现这个功能:
1. **获取输入**:使用`scanf`函数从用户处获取输入的句子。
2. **分词**:由于C语言本身没有内置的分词功能,你需要手动遍历字符串,遇到空格就认为是一个单词的结束。
3. **存储单词**:将每个单词存入一个动态分配的字符数组,如`char* word_list[]`。
4. **反转单词列表**:创建一个新的字符指针数组,并将单词按相反的顺序插入。
5. **拼接结果**:遍历反转后的单词数组,连接成新的句子。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
void reverse_words(char* sentence, char** reversed_sentence) {
int word_count = 0;
char* current_word = strtok(sentence, " "); // 分割单词
while (current_word != NULL) {
reversed_sentence[word_count++] = current_word; // 存储单词
current_word = strtok(NULL, " ");
}
// 反转并拼接单词
char* end = *reversed_sentence + word_count - 1;
for (int i = 0; i < word_count / 2; i++) {
char temp = *reversed_sentence[i];
*reversed_sentence[i] = *(end - i);
*(end - i) = temp;
}
}
int main() {
char sentence[100];
printf("Enter a sentence: ");
fgets(sentence, sizeof(sentence), stdin); // 防止末尾的换行符
sentence[strlen(sentence) - 1] = '\0'; // 删除末尾的换行符
char* reversed_sentence[word_count = 0]; // 初始化动态数组
reverse_words(sentence, reversed_sentence);
for (int i = 0; i < word_count; i++) {
printf("%s ", reversed_sentence[i]);
}
printf("\n");
free(reversed_sentence); // 清理内存
return 0;
}
```
运行此程序,它会接收用户输入的英语句子,然后将其单词顺序颠倒。
阅读全文