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 09:02:41 浏览: 90
#include <stdio.h>
#include <ctype.h> // 包含toupper函数
#include <string.h> // 包含strlen函数
int main() {
char s[1000];
fgets(s, 1000, stdin); // 获取输入的字符串
int len = strlen(s);
int i = 0;
while (i < len) {
// 找到下一个句子的起始位置
while (i < len && (s[i] == ' ' || s[i] == '\n')) {
i++;
}
// 如果已经到达字符串末尾,结束循环
if (i == len) {
break;
}
// 将句子首字母大写
s[i] = toupper(s[i]);
// 找到句子结尾位置
int j = i + 1;
while (j < len && s[j] != '.' && s[j] != '?') {
j++;
}
// 过滤多余空格
int k = i + 1;
while (k < j) {
if (s[k] == ' ' && s[k - 1] == ' ') {
k++;
} else {
putchar(s[k++]);
}
}
// 输出句号或问号
putchar(s[j++]);
// 如果下一个字符是空格,则跳过
if (j < len && s[j] == ' ') {
j++;
}
// 更新i的位置
i = j;
}
return 0;
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)