C语言输入一个英文题目,将每个单词的首字母改写为大写字母,并删除单词间多余的空格(两单词之间只保留一个空格)
时间: 2024-02-15 20:04:24 浏览: 184
好的,我可以为你提供一个简单的例子来解决这个问题。
我们可以使用 `gets` 函数来输入一个英文题目,然后逐个字符处理,将每个单词的首字母改写为大写字母,并删除单词间多余的空格。具体步骤如下:
1. 定义一个字符数组 `str` 存储输入的英文题目,使用 `gets` 函数输入。
2. 定义一个布尔变量 `flag`,表示当前字符是否为单词的首字母,初始值为 `true`。
3. 遍历字符数组 `str` 中的每个字符:
- 如果当前字符为小写字母,并且 `flag` 为 `true`,则将该字符改为大写字母,并将 `flag` 设置为 `false`。
- 如果当前字符为大写字母,则将 `flag` 设置为 `false`。
- 如果当前字符为空格,并且前一个字符也是空格,则跳过当前字符。
- 其他情况,将当前字符加入到输出字符串中,并将 `flag` 设置为 `false`。
4. 输出处理后的字符串。
示例代码如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
printf("请输入一个英文题目:\n");
gets(str);
char output[100];
int len = 0;
bool flag = true;
for (int i = 0; str[i] != '\0'; i++) {
if (islower(str[i]) && flag) {
output[len++] = toupper(str[i]);
flag = false;
} else if (isupper(str[i])) {
output[len++] = str[i];
flag = false;
} else if (str[i] == ' ' && output[len - 1] != ' ') {
output[len++] = ' ';
flag = true;
} else {
output[len++] = str[i];
flag = false;
}
}
output[len] = '\0';
printf("处理后的字符串为:\n%s\n", output);
return 0;
}
```
注意,这个例子只是一个简单的实现,还有一些细节需要注意,比如单词中包含标点符号等情况。如果需要更加严谨的处理方式,可以使用正则表达式等工具来实现。
阅读全文