编写C语言程序:输入一个英文句子,将每个单词的第一个字母改成大写字母后将每个单词按相反的顺序输出,输入为一行字符串s,表示英语句子,只包含一行,表示操作后的字符串
时间: 2023-06-20 19:04:11 浏览: 129
以下是一个实现该功能的C语言程序:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void reverse_and_capitalize(char *s)
{
int len = strlen(s);
int i, j, k;
char word[100];
for (i = len - 1; i >= 0; i--) {
if (isspace(s[i])) {
for (j = i + 1, k = 0; j < len && !isspace(s[j]); j++, k++) {
word[k] = s[j];
}
word[k] = '\0';
strlwr(word);
word[0] = toupper(word[0]);
printf("%s ", word);
}
}
for (j = 0; j < len && !isspace(s[j]); j++) {
word[j] = s[j];
}
word[j] = '\0';
strlwr(word);
word[0] = toupper(word[0]);
printf("%s\n", word);
}
int main()
{
char s[1000];
fgets(s, sizeof(s), stdin);
reverse_and_capitalize(s);
return 0;
}
```
使用 `fgets()` 函数读取输入的字符串,然后遍历字符串,找出每个单词并进行处理。这里使用了一个辅助函数 `reverse_and_capitalize()` 来实现这个过程。该函数会从字符串的末尾开始遍历,找到每个单词并进行处理。处理的过程包括将单词的第一个字母改成大写字母,并将单词按相反的顺序输出。注意,这里使用了 `strlwr()` 函数将单词转换为小写字母,以便后面处理单词的第一个字母。最后一个单词需要特殊处理,因为它没有后面的空格。处理完所有单词后,将它们按相反的顺序输出即可。
阅读全文