输入一个英文句子(仅包含字母和空格),将每个单词的第一个字母改成大写字母。请使用循环和数组实现。用C语言
时间: 2024-10-22 16:21:11 浏览: 56
在C语言中,你可以通过以下步骤使用循环和数组来实现这个功能:
```c
#include <stdio.h>
#include <string.h>
void capitalize_first_letters(char* sentence) {
int length = strlen(sentence);
if (length > 0) {
// 将第一个字符转换为大写
sentence[0] = toupper(sentence[0]);
// 使用for循环遍历除第一个字符外的其余部分
for (int i = 1; i < length; i++) {
// 获取当前单词的开始位置(由空格分隔)
char* word_start = strchr(sentence, ' ');
if (word_start == NULL) { // 如果最后一个词没有空格,则遍历到字符串结束
word_start = &sentence[i];
} else {
*word_start = '\0'; // 在找到下一个单词前停止
}
// 将单词的第一个字母转换为大写
word_start = sentence;
while (*word_start != '\0') {
*word_start = toupper(*word_start);
word_start++;
}
}
}
}
int main() {
char sentence[] = "hello world, this is a test";
capitalize_first_letters(sentence);
printf("Capitalized sentence: %s\n", sentence);
return 0;
}
```
在这个程序中,我们首先检查输入的句子是否为空,然后对第一个字符使用`toupper`函数使其变为大写。接着,我们使用`strchr`函数和`'\0'`作为终止符,在每个单词之间进行循环,并使用`toupper`再次将每个单词的第一个字母转为大写。
阅读全文