如果孤独感 发表于 2021-10-17 21:01:26

为什么输入1,后输出的是Q


#include <stdio.h>

int main()
{
      char a;

      printf("请输入一个字符:");
      scanf("%c", &a);

      if (a >= 41 && a <= 90)
      {
                a += 32;
      }
      else if ( a >= 97 && a <= 122)
      {
                a -= 32;
      }

      printf("将大小写字母转换:%d%c\n", a, a);

      return 0;
}
~         

傻眼貓咪 发表于 2021-10-17 21:04:57

ASCII 字符 '1' 是 49,49+32 = 81 对应字符 'Q'

傻眼貓咪 发表于 2021-10-17 21:07:00

本帖最后由 傻眼貓咪 于 2021-10-17 21:08 编辑

a 到 z 对应号码:97 到 122
A 到 Z 对应号码:65 到 90

请问你的 41 从哪里来?

jackz007 发表于 2021-10-17 21:15:52

本帖最后由 jackz007 于 2021-10-17 21:17 编辑

      如果对字符编码没有十足的把握,那么,这一句
      if (a >= 41 && a <= 90)
. . . . . .
      else if (a >= 97 && a <= 122)
      改为:
      if (a >= 'A' && a <= 'Z')
. . . . . .
      else if (a >= 'a' && a <= 'z')

如果孤独感 发表于 2021-10-17 21:30:19

jackz007 发表于 2021-10-17 21:15
如果对字符编码没有十足的把握,那么,这一句

      改为:

原因?这我看答案也知道

jackz007 发表于 2021-10-17 21:32:07

如果孤独感 发表于 2021-10-17 21:30
原因?这我看答案也知道

       原因?因为这样它直观,永远都不会出错!

如果孤独感 发表于 2021-10-17 21:37:37

jackz007 发表于 2021-10-17 21:32
原因?因为这样它直观,永远都不会出错!

所以说原因?你在说什么?编程不用这样的方法不用知道原因?别人告诉你这样就这样照着抄?

如果孤独感 发表于 2021-10-17 21:38:36

jackz007 发表于 2021-10-17 21:32
原因?因为这样它直观,永远都不会出错!

好吧上面已经有大佬解释了

如果孤独感 发表于 2021-10-17 21:39:15

傻眼貓咪 发表于 2021-10-17 21:07
a 到 z 对应号码:97 到 122
A 到 Z 对应号码:65 到 90



额…………看错了?

如果孤独感 发表于 2021-10-17 21:42:41

傻眼貓咪 发表于 2021-10-17 21:07
a 到 z 对应号码:97 到 122
A 到 Z 对应号码:65 到 90



你这两个回复合起来才是最佳答案啊…………有点小尴尬

傻眼貓咪 发表于 2021-10-18 10:05:32

如果孤独感 发表于 2021-10-17 21:42
你这两个回复合起来才是最佳答案啊…………有点小尴尬

没有关系,共同学习{:5_91:}
页: [1]
查看完整版本: 为什么输入1,后输出的是Q