一、代码
不墨迹,先上代码再讲解~
#include <stdio.h>
int main() {
char ch;
// 获取用户输入
printf("请输入一个英文字母:");
scanf("%c", &ch);
// 判断输入的字母是大写还是小写
if (ch >= 'A' && ch <= 'Z')
{
printf("ASCII 码:%d\n", ch);
}
else if (ch >= 'a' && ch <= 'z')
{
printf("大写字母:%c\n", ch - 'a' + 'A');
}
else
{
printf("输入的不是英文字母。\n");
}
return 0;
}
二、如何通过比较 ASCII 码来判断字母的大小写
1.解题背景知识
(初步了解ASCII)
当计算机处理字符时,它们使用一种称为 ASCII(American Standard Code for Information Interchange)的编码系统。ASCII 编码将字符映射到整数值,其中包括大写字母(65-90)和小写字母(97-122)。ASCII 中对应大写字母和小写字母的差值恰好为 32。
a:65 | b:66 | ... | z:90 |
A:97 | B:98 | ... | Z:122 |
A-a=32 | B-b=32 | ... | Z-z=32 |
printf("%c\n",65);
printf("%d\n",65);
printf("%d\n",A);
printf("%c\n",A);
你们感受一下这个ASCII 和字符的灵活性~~是可以根据输出形式切换的。
2.判断逻辑
1.首先,我们将用户输入的字符保存在一个 char 类型的变量中(在示例代码中为 ch)。
scanf("%c", &ch);
2.然后,我们使用条件语句来判断该字符的范围。
如果该字符的 ASCII 值在大写字母的范围内(65-90),则说明它是一个大写字母。我们可以直接输出该字符的 ASCII 值作为结果。
if (ch >= 'A' && ch <= 'Z') { printf("ASCII 码:%d\n", ch);
3.如果该字符的 ASCII 值在小写字母的范围内(97-122),则说明它是一个小写字母。
为了输出对应的大写字母,我们可以通过将其转换为大写字母的 ASCII 值来实现。由于 ASCII 中大写字母和小写字母的差值恰好为 32,因此我们可以通过将其减去 32 来得到对应的大写字母的 ASCII 值。然后,我们可以将该 ASCII 值转换为字符并输出。
else if (ch >= 'a' && ch <= 'z') { printf("大写字母:%c\n", ch - 'a' + 'A'); // ch - 'a' + 'A' 和 ch - 32 在这里是等价的 }