主题:这题怎么结果这样?怪!!54
yyylq
[专家分:0] 发布于 2005-06-02 17:16:00
int x;
scanf("%d",&x);
switch(x)
{case 5:printf("Excellent");
default:printf("poor");
case 4:printf("Good");
case 3:printf("Pass");
case 2:printf("Fail");
}
输入的是3
结果为PassFail
怎么是这个结果阿?各位。看看!!
回复列表 (共4个回复)
沙发
59030777 [专家分:3220] 发布于 2005-06-02 17:13:00
晕呀 此题 帮不了 楼主解释!
scanf("%d",&x);你输入的是什么呀!!
楼主 要是输入 3时 PassFail 是结果!
要是 输入 其他的肯定 不是这个结果!所以我帮不了你!!
呵呵!!
板凳
yyylq [专家分:0] 发布于 2005-06-02 17:16:00
呵。SORRY.就是输入的3。呵呵。你给解释解释。谢谢拉[em12]
3 楼
59030777 [专家分:3220] 发布于 2005-06-02 17:46:00
才此题之前,我想和楼主说在做switch语句中先匹配case 然后遇到break这退出switch语句,如果没有与之匹配的case 则执行default后面的语句。
本题在输入3以后 进入switch语句,由于有匹配的case 所以做他后面的语句,输出Pass,由于没有break,所以继续执行 输出Fail,程序结束!
楼主可以加上break后,再看看结果!
还可以 输入其他的看看结果!
如:输入5 全打印(原因就是因为没有break)
输入4 打印后3条
输入2 只打印最后一条
如果输入其他的值(如8,10) 则打印后4条(这是因为default不是最后一条语句,他的后面也没有break)
4 楼
风鼠 [专家分:380] 发布于 2005-06-02 18:19:00
case后面要有个break,不然找倒匹配的话,后面的都会执行的啊
int x;
scanf("%d",&x);
switch(x)
{case 5:printf("Excellent");break;
default:printf("poor");break;
case 4:printf("Good");break;
case 3:printf("Pass");break;
case 2:printf("Fail");
}
我来回复