用C语言代码实现:小明同学写单词的时候喜欢反着写,比如 hello 他会写成 olleh。给出小明同学写的一个句子,请你将所有的单词复原。输入:共一行,一个字符串表示句子;输出:单词之间以空格分隔。每个单词一行。
时间: 2024-12-08 18:24:23 浏览: 20
在C语言中,我们可以遍历输入字符串,对于每一个单词,我们从后向前取字符并拼接成一个新的单词,直到遇到空格或者字符串结束。以下是简单的实现:
```c
#include <stdio.h>
#include <string.h>
void reverse_words(char* sentence) {
int start = 0;
for (int i = strlen(sentence) - 1; i >= 0; i--) { // 从后往前遍历
if (sentence[i] == ' ') { // 找到单词边界
char word[strlen(sentence) + 1]; // 新建一个单词数组
strncpy(word + 1, &sentence[start], i - start); // 反向复制单词内容到新数组
word[0] = '\0'; // 添加空字符作为单词结尾
printf("%s\n", word); // 输出单词
start = i + 1; // 更新开始位置
}
}
if (start != strlen(sentence)) { // 处理最后一个单词
char word[strlen(sentence) + 1];
strncpy(word + 1, &sentence[start], strlen(sentence) - start);
word[0] = '\0';
printf("%s\n", word);
}
}
int main() {
char input_sentence[100];
fgets(input_sentence, sizeof(input_sentence), stdin);
input_sentence[strcspn(input_sentence, "\n")] = '\0'; // 移除换行符
reverse_words(input_sentence);
return 0;
}
```
在这个程序中,`reverse_words`函数接受一个字符串作为输入,然后逐个反转单词。注意这里假设输入字符串不会包含连续的空格。
阅读全文