为什么要加上:score /=10?
为什么case常量表达式从10开始?
1、为什么要加上:score /=10?
除以10以后0分至100分就会变成了0到10个数字,(因为:score为整型int,所以被除以后即使不为整数, 在再次赋值后也会自动把小数部分去掉),这样,90<=X<=100分就变成了9和10,80<=x<90的范围就变成了8, 60<=x<80的范围就变以了6和7 。这道题中score=score/10=8
2、为什么case常量表达式从10开始?
应该和题意有关系吧,题中90-100定义为等级A、80-90定义为等级B、60-80定义为等级C、60分以下的为等级D,所以罗列case时自然而然是从高分往低分分配,最后60分以下的归到default里,这样思路清晰。但如果非要从低向高罗列也可以。
case 0:
case1:
case2:
case3:
case4:
case5:
printf("等级D");
break;
case6:
case7:
printf("等级C");
break;
…………………………不觉得这样很麻烦么?
3、那为什么 case 7:后面不用写printf("");和break;
因为60多分和70多分都是属于等级C的,所以这里与60分多时一并处理,swich语句中在case子句后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句。当分数在60多分与70多分之间时都会执行case6下面的语句。同理分数在100分与90分之间也是这样处理的。
因为6和7一个等级,所以可以不写
因为score是整型数据,score/=10之后简化了个位数据的判断,不加score/=10的话swith语句需要很多的case才能实现代码要求。