编写了一个输入一个一到一百的数字,然后会输出ABCD或者error的switch语句,但就输入什么都是归入default的输出,有无大佬教一下怎么改。
把'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;
}
你的switch里写的是个int,而case里是个char,他俩不相等啊
除非x/10的值刚好等于某个数字的ascii码