c语言ascii码问题

假设ch是数字字符,则ch- '0'是对应的数值

假设整形变量ch的值是0到9,则 ch+'0'是对应的数字字符

 

这两句话什么意思,求解

假设ch是数字字符,也就是'0','1','2'这些,那'1'-'0'=1,'2'-'0'=2,因为'0'的ASCII码是48,'1'是49,以此类推,

反过来也是一样,假设整形变量ch的值是0到9,那1+'0'='1',因为'0'的ASCII码是48,加1等于49,49对应的字符是'1'

若我们使用整数0转变为数值是0 转变为字符得话 那就要加上48了,因为ASCII表上 ‘0’ 表示得数值是 48 。 而字符 ‘0’ 再ASCII 表上数值是48,那么转变为我们想要得到得数值得话就需要减去48也就是‘0’,来得到数值0.

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7528599
  • 这篇博客你也可以参考下:【C】 ASCII码排序
  • 这篇博客也不错, 你可以看下【C】 ASCII码排序
  • 同时,你还可以查看手册:c语言-exp() 中的内容
  • 除此之外, 这篇博客: C语言-思路与编程1中的 1、根据输入字符的ASCII码来判别字符的类别。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    (1)写出上述编程思路。

    (2)根据(1)思路编程序。

    答:

    (1)由ASCII码表可知ASCII值小于32的为控制字符,在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。 1)先从键盘接收一个字符。2)根据ASCII码表判断字符的类别。3)输出字符的类别。

    (2)代码如下:

    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char c;
        printf("Input a character:\n");
        fflush(stdout);
        c = getchar();
        if (c < 32) {
            printf("This is a control character\n");
        } else {
            if (c >= '0' && c <= '9') {
                printf("This is a digit\n");
            } else {
                if (c >= 'A' && c <= 'Z') {
                    printf("This is a capital letter\n");
                } else {
                    if (c >= 'a' && c <= 'z') {
                        printf("This is a small letter\n");
                    } else {
                        printf("This is an other character\n");
                    }
                }
            }
        }
        return 0;
    }

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^