c语言【问题描述】 用户输入一个字符串 s(长度<1000,以回车结束),请将所有句子首字母大写、过滤多余空格后输出, 即遇到多于1个的连续空格,仅保留一个空格。 例如 s = "what's your name? my name is Tony." 应输出:What's your name? My name is tony. 注意:假定在 . 或 ? 之后是一个新的句子。 【样例输入】 good morning. boys and girls. 【样例输出】 Good morning. Boys and girls. 【样例输入】 happy Birthday, my love. 【样例输出】 Happy birthday, my love.代码
时间: 2023-06-01 11:02:47 浏览: 109
```c
#include <stdio.h>
#include <ctype.h> // 包含 isalpha()、isspace()、toupper() 等函数的头文件
int main() {
char s[1000];
fgets(s, 1000, stdin); // 读入字符串
int i = 0;
while (s[i] != '\0') { // 遍历字符串
if (isalpha(s[i])) { // 如果是字母
putchar(toupper(s[i])); // 输出大写字母
i++;
while (isalpha(s[i])) { // 跳过当前单词
putchar(tolower(s[i])); // 输出小写字母
i++;
}
} else if (s[i] == '.' || s[i] == '?') { // 如果是句号或问号
putchar(s[i]); // 输出句号或问号
i++;
while (isspace(s[i])) { // 跳过多余空格
i++;
}
} else if (isspace(s[i])) { // 如果是空格
putchar(' '); // 输出一个空格
i++;
while (isspace(s[i])) { // 跳过多余空格
i++;
}
} else { // 其他字符
putchar(s[i]); // 直接输出
i++;
}
}
return 0;
}
```
阅读全文