题解
小写字母转大写字母
1 条题解
-
0
解题思路
输入一个小写字母,输出对应的大写字母。比如输入
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