如何编写一个程序,接收一串字符作为输入,其中单词由空格分隔,目标是将每个单词的第一个字母转换为大写并保持其余部分不变,然后输出处理后的字符串?需要注意的是,单词定义为连续不包含空格的字符序列,可能存在的空格数量不限。
时间: 2024-12-17 21:28:11 浏览: 13
要编写一个C语言程序来实现这个功能,你可以使用`strtok()`函数分割输入的字符串,然后遍历每个单词并将第一个字母转换为大写。以下是一个示例程序:
```c
#include <stdio.h>
#include <ctype.h> // 包含ctype.h库用于大小写转换
void capitalize_first_letter(char *word) {
if (word[0] != '\0') { // 检查单词是否为空
word[0] = toupper(word[0]); // 将第一个字母转为大写
}
}
int main() {
char input[100]; // 假设最多接受100个字符作为输入
printf("Enter a string with words separated by spaces: ");
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串
char *token = strtok(input, " "); // 分割字符串,返回第一个单词
while (token != NULL) {
capitalize_first_letter(token); // 对每个单词进行首字母大写处理
printf("%s ", token); // 输出处理后的单词
token = strtok(NULL, " "); // 获取下一个单词,直至结束
}
return 0;
}
```
在这个程序中,`capitalize_first_letter()`函数接受一个指向单词的指针,检查其是否非空,然后使用`toupper()`函数将第一个字符转为大写。
运行该程序后,它会提示你输入一个字符串,然后输出处理后的结果,其中每个单词的第一个字母都变为大写。
阅读全文