小明同学写单词的时候喜欢反着写,比如 hello 他会写成 olleh。给出小明同学写的一个句子,请你将所有的单词复原输入 共一行,一个字符串表示句子,单词之间以空格分隔。输出,每个单词一行。请写一个c语言代码
时间: 2024-11-20 07:39:58 浏览: 21
为了帮助小明同学复原他写的倒序单词,我们可以编写一个简单的 C 语言程序,该程序会接收用户输入的句子,然后逐个单词反转并打印出来。以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
// 函数用于反转单个单词
void reverse(char *word) {
int start = 0;
int end = strlen(word) - 1;
while (start < end) {
char temp = word[start];
word[start] = word[end];
word[end] = temp;
start++;
end--;
}
}
int main() {
// 用户输入句子
printf("请输入一个句子(单词间用空格分隔): ");
char input[1000]; // 假设最大长度不超过1000个字符
fgets(input, sizeof(input), stdin);
// 分割句子为单词
char* words[] = {input};
size_t num_words = 1;
char* token;
token = strtok(input, " "); // 使用空格作为分隔符
while (token != NULL) {
words[num_words++] = token; // 保存单词到数组
token = strtok(NULL, " ");
}
// 反转每个单词并打印
for (size_t i = 0; i < num_words; i++) {
reverse(words[i]);
printf("%s\n", words[i]); // 每行打印一个单词
}
return 0;
}
```
运行这个程序,它会提示用户输入句子,然后按原始顺序显示每个单词。注意这个程序假设用户输入的句子不超过1000个字符,实际应用中需要处理用户输入的边界情况。
阅读全文