标题: if和switch在转换中的校验问题 [打印本页] 作者: Cesar-Bear 时间: 2015-9-26 15:59 标题: if和switch在转换中的校验问题 第一个代码:
#include<stdio.h>
int main(int argc,const char * argv[]){
int score;
printf("请输入一个分数:\n");
scanf("%d",&score);
if(score<0||score>100){
printf("你考这个成绩,你妈妈知道么?");
return 0;
}
int s=score/10;
switch(s){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("E\n");
break;
case 6:
printf("D\n");
break;
case 7:
printf("C\n");
break;
case 8:
printf("B\n");
break;
case 9:
case 10:
printf("A\n");
break;
}
}
第二个代码
#include<stdio.h>
int main(int argc,const char * argv[]){
int score;
printf("请输入一个分数:\n");
scanf("%d",&score);
int s=score/10;
switch(s){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("E\n");
break;
case 6:
printf("D\n");
break;
case 7:
printf("C\n");
break;
case 8:
printf("B\n");
break;
case 9:
case 10:
printf("A\n");
break;
default:printf("你考这个成绩,你妈妈知道么?\n");
}
}
请问第一个代码和第二个这个代码有什么区别么?{:2_33:}作者: sclea 时间: 2015-9-26 16:37
第一个代码是校验输入的分数是否真实,超过100或者是低于0分都不会执行swich语句,而是直接打印"你考这个成绩,你妈妈知道么",第二段代码是没有这个校验值的,即使是输入了160的分数也会被判断为A,不知道我说的对不对作者: wwf707542865 时间: 2015-9-26 17:32
楼上回答不对,第二段如果输入160分,那么s=16,default语句会执行,提示你靠这个成绩你妈妈知道么,第一段代码的if语句和第二段代码的default语句都是提示分数输入错误,只是if直接一些作者: Cesar-Bear 时间: 2015-9-28 15:09
明白了明白了,谢谢!!!!