c语言编程,给定一个字符串,把其中各个单词的顺序颠倒,注意保持句首字母大写,标点符号不动。例如:输入:Good morning! 输出:dooG gninrom!
时间: 2024-02-24 13:56:57 浏览: 165
string操作方法.docx
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void reverse_words(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
char temp;
// 倒序遍历字符串
while (end > start) {
// 跳过标点符号
while (!isalpha(*start)) {
start++;
}
while (!isalpha(*end)) {
end--;
}
// 交换单词
if (start < end) {
temp = *start;
*start++ = *end;
*end-- = temp;
}
}
}
int main() {
char str[] = "Good morning!";
printf("Original string: %s\n", str);
reverse_words(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
以上代码中,`reverse_words()` 函数实现了字符串中单词的倒序操作。首先获取字符串长度并定义指向字符串首尾的指针 `start` 和 `end`,然后从字符串末尾开始向前遍历,交换每个单词的位置。在交换单词时,跳过标点符号。最后在 `main()` 函数中调用 `reverse_words()` 并输出结果。
阅读全文