C语言问题(4-5-1)

2个程序。。
1:#include "stdio.h"
main()
{
char a;
scanf("%d",&a);
switch(a)
{
case 1:printf("A\n");break;
case 2:printf("B\n");
case 3:printf("C\n");
case 4:printf("D\n");
case 5:printf("E\n");break;
default:printf("error\n");
}
}

2:#include "stdio.h"
main()
{
char a;
scanf("%d",&a);
switch(a)
{
case '1':printf("A\n");break;
case '2':printf("B\n");
case '3':printf("C\n");
case '4':printf("D\n");
case '5':printf("E\n");break;
default:printf("error\n");
}
}

为什么第一个,我输入2,执行结果为
B
C
D
E

而第二个,我输入2,执行结果为
error

第一道:
case 2:printf("B\n");
case 3:printf("C\n");
case 4:printf("D\n");
以上几句后面都必须加 break
否则执行完 case 2 后没有break来结束语句,程序将顺序执行下面的语句,直到遇到break才会终点程序!

第二道;
case'2'中2不能加了单引号,
若加了,刚表示输入的a值必须为字符型常量,而你输入的数字2与字符'2'的ASCII码不相等,且在下面也找不到与字符'2'相等的case,所以执行default:printf("error\n");
输出error
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答