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-05-27 20:05:01 浏览: 103
#include <stdio.h>
#include <ctype.h>
int main() {
char s[1000];
fgets(s, 1000, stdin); // 读入字符串
int i = 0;
while (s[i] != '\0') {
// 处理每个句子
while (isspace(s[i])) i++; // 跳过开头的空格
if (s[i] != '\0') { // 如果不是空串
if (islower(s[i])) { // 将首字母大写
s[i] = toupper(s[i]);
}
putchar(s[i]);
i++;
while (s[i] != '\0' && s[i] != '.' && s[i] != '?') { // 输出句子中的其他字符
if (isspace(s[i])) { // 过滤多余空格
putchar(' ');
while (isspace(s[i])) i++;
} else {
putchar(s[i]);
i++;
}
}
if (s[i] != '\0') { // 输出句号或问号
putchar(s[i]);
i++;
}
putchar(' '); // 在句子之间加一个空格
}
}
putchar('\n'); // 输出换行符
return 0;
}
阅读全文