题解
小写字母转大写字母
1 条题解
-
0
解题思路
每个字符在计算机里其实都对应一个整数,叫 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