帮我编写代码c语言小明同学写单词的时候喜欢反着写,比如 `hello` 他会写成 `olleh`。给出小明同学写的一个句子,请你将所有的单词复原。 【输入形式】共一行,一个字符串表示句子,单词之间以空格分隔。句子以回车结束。 【输出形式】每个单词一行。
时间: 2024-12-10 13:36:53 浏览: 16
当然可以,这里是一个简单的C语言程序,用于反转小明同学输入的句子中的单词顺序:
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char* sentence) {
int start = 0;
for (int end = 0; sentence[end] != '\0'; end++) {
// 找到单词的结束位置
if (sentence[end] == ' ' || sentence[end] == '\0') {
// 反转找到的单词
char temp[strlen(sentence) - start + 1];
strncpy(temp, &sentence[start], end - start);
temp[end - start] = '\0';
reverseString(temp); // 自定义函数,反转字符数组
printf("%s ", temp); // 输出单词
start = end + 1; // 更新开始位置到下一个单词
}
}
}
// 自定义函数,反转给定的字符串
void reverseString(char* str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char input[1000];
fgets(input, sizeof(input), stdin); // 从标准输入读取句子
// 删除末尾的换行符
input[strcspn(input, "\n")] = '\0';
// 反转整个句子
reverseWords(input);
return 0;
}
```
**示例输入:**
```
hello world how are you
```
**示例输出:**
```
you are how world hello
```
阅读全文