首页 经验 正文

当然可以,以下是一道C语言的基础试题,适用于初学者或者复习者

扫码手机浏览

编写一个程序,让用户输入一段英文句子,然后输出该句子中每个单词的首字母大写,要求:1、字符串以空格分隔单词,2、不改变原字符串,只处理首字母,3、如果单词的第一个字符已经是大写,那么就不做任何处理,#include <stdio.h>#include <string.h>void cap……...

编写一个程序,让用户输入一段英文句子,然后输出该句子中每个单词的首字母大写。

要求:

1、字符串以空格分隔单词。

2、不改变原字符串,只处理首字母。

3、如果单词的第一个字符已经是大写,那么就不做任何处理。

#include <stdio.h>
#include <string.h>
void capitalize_first_letter(char *str) {
    if (*str != '\0') { // 检查是否为空字符
        if (str[0] >= 'a' && str[0] <= 'z') { // 如果是小写,转换为大写
            str[0] = str[0] - 32; // 小写字母转大写字母的ASCII值差
        }
        // 递归处理剩下的字符
        capitalize_first_letter(str + 1);
    }
}
int main() {
    char sentence[100]; // 输入的句子,最大长度100
    printf("Enter a sentence: ");
    fgets(sentence, sizeof(sentence), stdin); // 从标准输入读取
    // 去掉末尾的换行符
    sentence[strlen(sentence) - 1] = '\0';
    capitalize_first_letter(sentence); // 处理首字母
    printf("Sentence with capitalized first letter: %s\n", sentence); // 输出结果
    return 0;
}

请根据需要进行修改和扩展,如果你需要更难或者特定主题的题目,欢迎继续提问。