top1编程
← 返回题目
题解

小写字母转大写字母

1 条题解

  • 0
    @ 2026-8-4 21:06:23

    解题思路

    每个字符在计算机里其实都对应一个整数,叫 ASCII 码。小写字母 a~z 的 ASCII 码是 97~122,大写字母 A~Z 的 ASCII 码是 65~90。同一个字母,大写比小写小 32。例如 a 是 97,A 是 65,97−32=65。

    所以把一个读入的小写字母变成大写,只要把它减去 32 就行:char(ch-32)。

    用 char 类型读入字母,循环 n 次,每读入一个字母就输出它的大写形式。注意输出格式:字母之间要用空格隔开,第一个字母前面不能有空格,所以代码里用 if(i==1) 判断:第一个字母直接输出,其余字母先输出一个空格再输出。

    代码里写 char(ch-32) 是告诉计算机把运算结果当成字符来输出,否则它会把数字(比如 65)直接打印出来。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;              // n:小写字母的个数
        cin >> n;           // 读入个数 n
        for (int i = 1; i <= n; i++) {   // 循环读入 n 个字母
            char ch;        // ch:当前读入的一个小写字母
            cin >> ch;      // 读入这个字母
            if (i == 1) {   // 第一个字母前不输出空格
                cout << char(ch - 32);   // 小写减 32 得到大写
            } else {        // 其余字母前先输出一个空格
                cout << " " << char(ch - 32);
            }
        }
        cout << endl;       // 全部输出后换行
        return 0;
    }
    

    复杂度分析

    循环执行 n 次,每次做一次减法和一次输出,时间复杂度是 O(n),其中 n 是字母的个数。空间上只用 n、i、ch 几个变量,空间复杂度 O(1)。

    • 1