请用C语言实现给定一个字符串,把其中各个单词的顺序颠倒,注意保持句首字母大写,标点符号不动
时间: 2024-02-03 21:02:42 浏览: 107
好的,下面是用C语言实现将字符串中各个单词的顺序颠倒的代码,注意保持句首字母大写,标点符号不动:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void reverse_words(char *str)
{
char *start = str;
char *end = str + strlen(str) - 1;
char temp;
// reverse the whole string
while (start < end) {
temp = *start;
*start++ = *end;
*end-- = temp;
}
// reverse each word in the string
start = end = str;
while (*start) {
while (*end && !isspace(*end)) {
end++;
}
if (*end == '\0') {
end--;
}
char *word_end = end;
while (start <= word_end) {
temp = *start;
*start++ = *word_end;
*word_end-- = temp;
}
start = ++end;
}
// capitalize first letter of each word
start = str;
while (*start) {
if (isalpha(*start)) {
*start = toupper(*start);
break;
}
start++;
}
}
int main()
{
char str[100];
printf("Please enter a string: ");
fgets(str, sizeof(str), stdin);
reverse_words(str);
printf("Reversed string: %s", str);
return 0;
}
```
代码的主要思路是先将整个字符串反转,然后再将每个单词反转,最后再将每个单词的首字母大写。
阅读全文