top1编程
← 返回题目
题解

小写字母转大写字母

1 条题解

  • 0
    @ 2026-8-3 18:46:46

    解题思路

    输入一个小写字母,输出对应的大写字母。比如输入 a,输出 A。

    解题的关键是理解 ASCII 编码:每个字符在电脑里都对应一个编号,比如 a 是 97,A 是 65。把字母表排开看会发现一个规律——同一个字母的大写和小写,编号正好相差 32:a(97) − A(65) = 32,b(98) − B(66) = 32,其余字母也一样。也就是说,小写字母的编号比对应大写字母的编号大 32。

    所以小写转大写,只要把编号减去 32:大写 = 小写 - 32。比如 a 的编号 97 减 32 得到 65,正好是 A。

    在 C++ 里,char 类型的变量可以直接和整数做加减运算,因为字符在内存里存的本来就是编号。定义 char c;,用 cin >> c; 读入字母,然后输出 char(c - 32)。

    为什么外面要加 char(...)?因为 c - 32 算出来是一个整数(97−32=65),直接输出会显示成数字 65,而不是字母 A。加上 char() 把它转回字符类型,程序才知道要输出字母 A。这一步很关键,漏掉 char() 是初学者最常见的错误。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        char c;         // c:输入的小写字母
        cin >> c;       // 读入一个小写字母
        // 小写字母ASCII码比大写大32,减32变成大写;char()把它转回字符
        cout << char(c - 32) << endl;
        return 0;
    }
    

    复杂度分析

    程序只做一次读入、一次减法和一次输出,操作次数固定,和输入的是哪个字母无关。所以时间复杂度是 O(1)。

    空间上只用了 1 个 char 变量,空间复杂度是 O(1)。

    这类“查 ASCII 表”的题,思路都是找编号之间的差,记住大小写相差 32 这个规律,两个方向的转换就都会做了。

    • 1