问答详情
源自:4-16 分支结构之switch语句

为什么要加上 score /=10

为什么要加上:score /=10?

为什么case常量表达式从10开始?

提问者:i是祎不是伟 2016-04-12 21:10

个回答

  • 小雾3378873
    2016-06-03 18:05:03

    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分之间也是这样处理的。 
           

  • Nicole5863
    2016-05-19 09:28:34

    因为6和7一个等级,所以可以不写

  • _西决
    2016-04-12 21:37:49

    因为score是整型数据,score/=10之后简化了个位数据的判断,不加score/=10的话swith语句需要很多的case才能实现代码要求。