c语言switch语句,输入啥都是default那一项

编写了一个输入一个一到一百的数字,然后会输出ABCD或者error的switch语句,但就输入什么都是归入default的输出,有无大佬教一下怎么改。

img

img

img

把'9','8','7'这类字符都改成9,8,7这样的数字,你switch是一个int,case是个char,怎么能匹配?

把case 里面的字符数字改为数字即可,因为图片里的代码中的case 中的数字字符实际上代表的是这个数字的ASCII码,如'8'字符对应的是其ASCII码值56,所以输入100以内的数值是匹配不到这个case的,如果输入560-569之间的数字倒是可以匹配到(因为这之间的数字除以10的整数商是56,所以就能够匹配case '8'了),所以如果需要匹配100以内的数字,把数字字符改为数字即可,修改如下:

参考链接:
ASCII码对应表,ASCII码值的大小顺序 - 知乎

#include <stdio.h>

int main(void){
    
    int x;
    scanf("%d",&x);
    
    switch((int)(x/10)){
        
        case 10:
        case 9:printf("A\n");break;    
        case 8:printf("B\n");break;    
        case 7:printf("C\n");break;    
        case 6:printf("D\n");break;    
        default:printf("error\n"); break;
    }
    
    return 0;
} 

img

你的switch里写的是个int,而case里是个char,他俩不相等啊
除非x/10的值刚好等于某个数字的ascii码