为了账号安全,请及时绑定邮箱和手机立即绑定

C语言入门4-16分支结构

为什么这里要把score除以10呢?



正在回答

2 回答

1、score/10是结合隐形强制转换使用。

2、case 后面跟的是整数,又根据 “switch后面的表达式语句只能是整型或者字符类型”这句话,所以我们可以判断switch后面的表达式是整形的而不是字符型的。

3、代码中score/10等于8.7,但是因为switch后面的表达式是整形的,所以程序会对8.7做隐形强制转换使其转换为整形。在c++中,小数转换成整形时会把小数点部分舍弃而不是四舍五入,也就是说8.7被转换成8了。 这样一来,switch语句就会执行case 8 这个分支,也就是输出“等级B”。

3、score/10结合隐形强制转换把分数转换成10、9、8、7、6等整形变量,然后参与switch分支判断,这样就可以实现 90-100分输出“等级A”、80-90分输出“等级B”这种目的。

0 回复 有任何疑惑可以回复我~
#1

张土土

提交之后才发现我的代码和网页上不太一样,不过原理都是一样的,我的部分代码贴下,方便结合答案理解。 int score = 87; //考试分数为87分 switch(score/10)
2016-01-14 回复 有任何疑惑可以回复我~

比如说,他考了87分,那么87/10等于8,如果他考了93分,那么93/10等于9,也就是说,可以先通过score/10来取十位数,然后看switch语句中有case多少与之对应,然后依次执行完,遇到break就终止了,不会继续往下执行。例如:把程序中的case 8下面的那个break去掉,那么运行结果就是等级B等级C,因为遇到break才跳出switch,你可以在想想。如下:


#include <stdio.h>

int main() 

{

    int score = 87;   

    score/=10;

    

    switch(score)

    {

        

        case 10:

        case 9:

            printf("等级A");

            break;

        case 8:

            printf("等级B");

                           

        case 7:

        case 6: 

            printf("等级C");

            break;               

        default:

            printf("等级D");

            break;    

    }

    return 0;

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926210    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

C语言入门4-16分支结构

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信