本帖最后由 风过无痕1989 于 2020-12-4 12:33 编辑
大琯字母与小写字母相差 32
小写字母 a 的 ASCII 码是 97,而大写字母 A 的 ASCII码是 65,它们相差 32。所以 小写字母 - 32 就是大写字母,大写字母 + 32 就是小写字母
if (ch >= 'A' && ch <= 'Z') 意思是如果输入的是大写字母
ch = ch - 'A' + 'a' 意思是所输入的是大写字母,则先减法A的 ASCII 码 65,这样就得到一个差,这个差再加上小字字母 a 的 ASCII 码,就是该输入字母的大写字母。例如:输入字母 M,它的 ASCII 码是 77,77 - 65 = 12,12 再加小写字母 a 的 ASCII 码 97,即 12 + 97 = 109,109 就是小写字母 m 的 ASCII 码
ASCII 码对照表:
https://tool.oschina.net/commons?type=4
- #include <stdio.h>
- int main()
- {
- int ch;
- while ((ch = getchar()) != '\n')
- {
- if(ch >= 'A' && ch <= 'Z') // 你的程序有错误,这里应该是大写字母,若一定要用小写字母,则 ch = ch + 32 改为 ch = ch - 32
- {
- ch = ch + 32;
- }
- else
- {
- ch = ch - 32;
- }
- putchar(ch);
- }
- return 0;
- }
复制代码