C语言 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
时间: 2024-10-19 09:13:30 浏览: 39
判断字符串中的单词个数
4星 · 用户满意度95%
在C语言中,我们可以使用数组、指针以及字符串操作函数来实现这个功能。这里是一个简单的步骤描述:
1. 首先,读取用户的输入英文句子作为字符串。
2. 然后,将字符串分割成单词,并存储在一个动态分配的字符数组或链表中,考虑到单词间有空格分隔,可以使用`strtok`函数。
3. 创建一个新的字符串,用于存放翻转后的单词顺序。
4. 使用两个指针,一个指向原句数组,一个指向新字符串的末尾,逐个取出原句中的单词,将其添加到新字符串的开头。
5. 在添加单词到新字符串前,确保已经添加了空格,除非这是第一个单词。
6. 最后,返回翻转后的字符串。
以下是伪代码形式:
```c
#include <stdio.h>
#include <string.h>
void reverse_words(char* sentence) {
char* word = strtok(sentence, " ");
while (word != NULL) {
// 将单词追加到新字符串的开头
strcat(new_string, word);
if (word != strtok(NULL, " ")) { // 如果不是最后一个单词
strcat(new_string, " "); // 添加空格
}
word = strtok(NULL, " ");
}
}
int main() {
char input[100];
printf("Enter an English sentence: ");
fgets(input, sizeof(input), stdin); // 注意去掉最后的换行符
input[strcspn(input, "\n")] = '\0'; // 或者用getchar();
reverse_words(input);
printf("Reversed words: %s\n", new_string);
return 0;
}
```
阅读全文