Skip to content

哈喵~!各位同学好呀,我是你们的猫娘助教!今天我们要一起解决一个超级基础但又很有用的小问题:单词首字母大写,喵~。别看它简单,打好基础才能跳得更高嘛!就像猫猫要先学会悄悄走路,才能扑到小鱼干一样!(ฅ^•ﻌ•^ฅ)

题目大意

这道题目的要求非常简单直接哦,喵~。

任务: 给你一个单词,你需要把这个单词的第一个字母变成大写。单词里其他的字母保持原样,完全不用动它们。

比如说,如果给你一个单词 konjac,你就要把它变成 Konjac。如果给你的单词已经是 ApPLe 这种首字母大写的,那它就还是 ApPLe,不需要做任何改变。很简单对吧?就像给一只小猫戴上一个漂亮的领结,只需要装饰一下最前面就好啦!

题解方法

解决这个问题,我们的思路就像猫猫抓老鼠一样,要快、准、狠!喵哈哈~

  1. 读取输入:首先,我们需要把题目给的那个单词读进来。在 C++ 里,用 std::string 来存放一个单词再合适不过了,它就像一个专门装小鱼干的罐子,用起来特别方便,喵~。
  2. 定位第一个字母std::string 里的字符就像排排坐的小猫,我们可以通过下标(从 0 开始哦)找到任何一只。第一个字母的下标当然就是 0 啦!
  3. 执行大写转换:找到了第一个字母,我们就要施展“大写魔法”了!C++ 的 <cctype> 库里有一个超级好用的函数叫做 std::toupper()。你只要把一个小写字母丢给它,它就会还给你一个大写字母。如果丢给它的本来就是大写字母或者不是字母,它会原封不动地还给你,是不是很聪明呀?
  4. 输出结果:最后,把我们修改好的新单词打印出来,任务就完成啦!耶!🐾

整个过程就是:读进来 -> 改第一个 -> 打出来。一气呵成!

题解

下面就是这份思路的 C++ 实现代码啦,我已经加上了猫娘专属的注释,希望能帮到你哦~

cpp
#include <iostream> // 用来处理输入输出的,比如 cin 和 cout,喵~
#include <string>   // 用来使用 std::string 这个超级方便的字符串类型!
#include <cctype>   // 关键的魔法就在这里!toupper 函数就住在这个头文件里。

// 这是我们解决“单词首字母大写”问题的代码~
int main() {
    // 这两行是为了让输入输出变得更快,像猫猫的瞬移一样!
    // 在编程竞赛里,这是个好习惯哦,即使是简单问题也可能用得上。
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    // 声明一个 string 变量,名字叫 word,用来存放我们读入的单词。
    std::string word;

    // 从标准输入流(就是你的键盘输入啦)读取一个单词,存到 word 里。
    std::cin >> word;

    // 题目保证了单词非空,所以我们可以放心地操作第一个字符 word[0]。
    // 不过,写一个 if (!word.empty()) 来检查一下总是个好习惯,就像猫猫走路前总要看看路一样,安全第一!
    if (!word.empty()) {
        // 这就是最核心的一步!
        // word[0] 就是字符串的第一个字符。
        // std::toupper(word[0]) 会把这个字符变成大写。
        // 然后我们再把这个大写字符放回原来的位置。
        word[0] = std::toupper(word[0]);
    }

    // 把修改后的单词输出到屏幕上。
    // 用 '\n' 比用 std::endl 更快哦,因为它不会强制刷新缓冲区,轻手轻脚的~
    std::cout << word << '\n';

    return 0; // 程序顺利结束,喵~
}

知识点介绍

这道题虽然简单,但涉及到的知识点都是 C++ 中非常基础和重要的部分,让我们一起来梳理一下吧!

  1. std::string

    • 这是 C++ 标准库中用于处理字符串的强大工具。相比于 C 语言的字符数组(char[]),std::string 更安全、功能更丰富。
    • 你可以像访问数组一样使用下标 [] 来访问或修改特定位置的字符。例如 word[0] 就是访问第一个字符,word[1] 是第二个,以此类推。
    • 它还自带了很多好用的成员函数,比如 .length().size() 获取长度,.empty() 检查是否为空等等。
  2. <cctype> 头文件和 std::toupper() 函数

    • <cctype> 是一个用于处理字符的 C++ 标准库头文件,里面包含了很多有用的字符函数。
    • std::toupper(char_t c):这个函数接收一个字符(内部会转成 int 处理),如果这个字符是小写字母,它会返回对应的大写字母。如果不是小写字母(比如已经是大写、是数字或符号),它会原样返回。这让我们省去了自己判断 c 是否在 'a''z' 范围内的麻烦,非常方便,喵~。
    • 与它对应的还有 std::tolower(),作用是转换成小写。还有 std::isalpha()(判断是否是字母)、std::isdigit()(判断是否是数字)等,都非常实用!
  3. C++ 的输入/输出流 (<iostream>)

    • std::cin:标准输入流对象,通常用于从键盘读取数据。使用 >> 操作符可以很方便地读取各种类型的数据。
    • std::cout:标准输出流对象,用于向屏幕输出数据。使用 << 操作符可以连接多个输出项。
    • 快速 I/O: std::ios_base::sync_with_stdio(false);std::cin.tie(nullptr); 这两行代码可以解除 C++ 流与 C 标准 I/O 的同步,并解开 cincout 的绑定,从而大幅提升输入输出的效率。在处理大量输入输出的题目中,这个优化是必不可少的!

好啦,这次的题解就到这里啦!希望对你有帮助哦~ 如果还有其他问题,随时可以再来找我,喵!(>^ω^<)

Released under the MIT License.