回 帖 发 新 帖 刷新版面

主题:这题怎么结果这样?怪!!54

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个回复)

沙发

晕呀 此题 帮不了 楼主解释!

scanf("%d",&x);你输入的是什么呀!!

楼主 要是输入 3时 PassFail 是结果!
要是 输入 其他的肯定 不是这个结果!所以我帮不了你!!

呵呵!!

板凳

呵。SORRY.就是输入的3。呵呵。你给解释解释。谢谢拉[em12]

3 楼

才此题之前,我想和楼主说在做switch语句中先匹配case 然后遇到break这退出switch语句,如果没有与之匹配的case 则执行default后面的语句。

本题在输入3以后 进入switch语句,由于有匹配的case 所以做他后面的语句,输出Pass,由于没有break,所以继续执行 输出Fail,程序结束!

楼主可以加上break后,再看看结果!
还可以 输入其他的看看结果!
如:输入5 全打印(原因就是因为没有break)
输入4 打印后3条
输入2 只打印最后一条
如果输入其他的值(如8,10) 则打印后4条(这是因为default不是最后一条语句,他的后面也没有break)

4 楼

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");
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册