tucc 发表于 2021-12-5 00:01:09

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

#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;
}

jackz007 发表于 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' 就这样被变成了对应的小写字母。当然,小写字母变大写的道理与此完全相同。

傻眼貓咪 发表于 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')
页: [1]
查看完整版本: { ch = ch -'A'+ 'a'; } else { ch =ch - 'a' + 'A'; }是什么意思