鱼C论坛

 找回密码
 立即注册
查看: 1427|回复: 2

{ ch = ch -'A'+ 'a'; } else { ch =ch - 'a' + 'A'; }是什么意思

[复制链接]
发表于 2021-12-5 00:01:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        int ch;
       
        printf("请输入一行英文句子;");
       
        while((ch = getchar()) != '\n')
        {
                if(ch >= 'A' && ch<= 'Z')
                {
                        ch = ch -'A'+ 'a';
                }
                else
                {
                        ch =ch - 'a' + 'A';
                }
               
                putchar(ch);
               
        }
       
        putchar('\n');
       
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-5 00:22:44 | 显示全部楼层
{ ch = ch -'A'+ 'a'; }
        这部分把 ch 从大写字母变成小写
{ ch =ch - 'a' + 'A'; }
        这部分把 ch 从小写字母变成大写

        一般情况下,需要判断 ch 是一个大写字母的时候执行 ch - 'A',例如,当 ch = 'E' 时,ch - 'A' = 'E' - 'A' = 4,这个 4 是 'E' 对 'A' 的距离,和 'e' 对 'a' 的距离相同,都是 4,所以,'a' + 4 = 'e',于是,大写字母 'E' 就这样被变成了对应的小写字母。当然,小写字母变大写的道理与此完全相同。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2021-12-5 11:09:40 | 显示全部楼层
getchar() 用于读取缓冲区字符(ASCII 字符)

ASCII 基本编码为 125,加上 EASCII 共 256,键盘上所有键上的符号都一一对应自己的 ASCII 编码,如:'K' 为 75、'&' 为 38,当然数字 0 至 9 也有属于自己的 ASCII 编码,如:'4' 为 52、'7' 为 55(注:这里的 4 和 7 是以 getchar() 方式取得,形态是字符,不是整数,所以才有 ASCII 编码,如果用 scanf() 可以以 %c 取得字符)

假设 C = 'a':
字符 'a' 对应 ASCII 编码为 97
字符 'A' 对应 ASCII 编码为 65
那么如何将 C 值变成 'A' 呢(也就是 'a' 变成 'A')?

解答:C = C - 'a' + 'A',也就是 'a' - 'a' + 'A' = 97 - 97 + 65 = 65('A')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 05:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表