#P5704. 【深基2.例6】字母转换

【深基2.例6】字母转换

【深基2.例6】字母转换

题目来源

洛谷 P5704

题目描述

输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。

输入格式

输入一行,一个 ASCII 可见的小写字符。

输出格式

输出一行,对应的大写字符。

样例输入

q

样例输出

Q

提示

一、char 是什么:存「一个字符」的变量

char c = 'a';     // 字符常量用单引号,且只能有一个字符
char d = 'A';
char sp = ' ';    // 一个空格也是字符

三种引号要分清:

写法 类型 例子
'a' 字符(char) 单个字符,单引号
"a" 字符串(多个字符) 双引号,末尾自带结束标记
a 变量名 不加引号

二、读一个字符:%c

char c;
scanf("%c", &c);     // 读一个字符,注意也要 &
printf("%c\n", c);   // 用 %c 输出字符本身

三、字符的本质是数字(ASCII 编码)

计算机里没有「字母」,只有数字。每个字符都对应一个编号,叫 ASCII 码:

  • 'a' = 97,'b' = 98,…… 'z' = 122
  • 'A' = 65,'B' = 66,…… 'Z' = 90
  • '0' = 48,'1' = 49,…… '9' = 57

所以 char 其实就是一个范围很小的整数。同一份数据,换个格式符就换个样子:

char c = 'a';
printf("%c\n", c);   // a   按字符解释
printf("%d\n", c);   // 97  按整数解释

记住大小关系:大写字母的编号比小写字母小 32('A' 65,'a' 97)。这个 32 就是本题「大小写转换」的钥匙。

四、常见错误

  • 用双引号写字符:char c = "a"; 编译不过。

  • 单引号里塞多个字符:'ab' 不是 char。

  • 输出用了 %d 却以为会打印字母。

  • 输入是一个字母,不是数字,所以变量要用 char,格式符用 %c。

  • 不要背 26 个字母的对照表:比较同一字母大小写的编号,找到那个固定差值,用它做加减。

  • 算出新字母的编号后,用 %c 输出,就会打印成字符。

自查:拿样例 q → Q 验证;再试 a 和 z,确认首尾字母都能正确转换。