给自己一个字符串,颠倒一个句子中每个单词的顺序,同时保留空格和,初始单词顺序,用c语言
时间: 2024-09-13 14:05:19 浏览: 46
用c语言实现 计算一个字符串中单词的个数
5星 · 资源好评率100%
要用C语言颠倒一个句子中每个单词的顺序,我们可以遵循以下步骤:
1. 读取整个句子并存储为字符串。
2. 遍历这个字符串,找到每个单词的起始和结束位置。
3. 对于每个找到的单词,将其翻转。
4. 重新组合这些单词,保留原有的空格和标点符号。
下面是一个简单的C语言代码示例,演示了如何实现上述步骤:
```c
#include <stdio.h>
#include <string.h>
void reverseRange(char *str, int start, int end) {
while (start < end) {
char temp = str[start];
str[start++] = str[end];
str[end--] = temp;
}
}
void reverseWords(char *str) {
int len = strlen(str);
int start = 0, end = len - 1;
int wordStart = -1;
for (int i = 0; i <= end; ++i) {
//找到单词的起始位置
if (str[i] != ' ' && wordStart == -1) {
wordStart = i;
}
//找到单词的结束位置
if (str[i] == ' ' || i == end) {
if (wordStart != -1) {
reverseRange(str, wordStart, i - 1);
wordStart = -1;
}
}
}
}
int main() {
char sentence[] = "Hello world this is a test sentence";
reverseWords(sentence);
printf("Original sentence: %s\n", sentence);
return 0;
}
```
这个程序会输出:
```
Original sentence: test sentence a is this world Hello
```
请注意,这个程序假设单词之间只有一个空格,并且句子以空格结束。它不处理标点符号,如果需要处理标点符号,你需要对代码进行相应的调整。
阅读全文