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

为什么不管我设置score为多少分,输出结果都是:等级D 呢?

#include<stdio.h>

int main() {

int score = 87; 

 switch(score){

   case 1:score>=90&&score<=100;printf("等级A") ;break;

  case2:score>=80&&score<=90;printf("等级B"); break;

  case3:score>=60&&score<80; printf("等级C");break;

   default:score<60; printf("等级D");break;

 }   

 return 0; 

}

提问者:半暖微凉 2015-12-01 21:50

个回答

  • Mr_Happens
    2015-12-10 09:01:28
    已采纳

    因为score的原始值是87,而switch(score)是直接判断score的值,case 1  就代表当score的值为1的时候,case 1:  冒号后面即是score == 1时执行的语句,所以说最score落到default里了,输出等级D。下面是根据源代码做的一点修改就能实现判断。只需要判断score的十位数

    #include<stdio.h>
    
    int main()
    {
        int score = 87;
        score = score/10;        /*下面的break好理解,关键就是这里。因为case后面带的值就是switch()括号里面的变量所代表的值,所以我这里做的处理是把score除10,因为score为int整型,所以除10之后个位数自动删去,得到8。这个8便能用到下面的switch语句中了。*/
          switch(score)            //这里score=8;
        {
            case 10:
            case 9:
                printf("等级A");        //当score=10或者9的时候,得到『等级A』
                break;
            case 8:
                printf("等级B");        //当score=8时,得到『等级B』
                break;            
            case 7:
            case 6: 
                printf("等级C");        //当score=7或6时,得到『等级C』
                break;
            default:
                printf("等级D");        //在上面的score取值情况外,全部得到『等级D』
                break;    
        }
                                        /*所以说整个对score的值是做了一个处理的,因为只需要判断区间,即只需要判断score的十位数,所以做上面的除10的处理。*/
        return 0;
    }

    如果懂了的话就采纳一下哟!

  • onemoo
    2015-12-02 00:34:17

    你好像没理解case后面应写什么。

    switch会将score的值与下面case后面的值(case之后,冒号之前)做匹配,匹配上就执行那个case冒号后面的语句。score和所有case都不匹配的话,就执行default: 后面的语句。

    所以,你这样写,三个case分别是1 2 3,只有在score是1 2 3时才会执行相应case后的语句。而score是87,只会跳到default那里,执行default后面的语句。

  • 云承寒
    2015-12-01 22:11:41

    public static void main(String[] args) {


    int score = 1; 

    switch(score)

    case 1:

    System.out.println("A");

    break;

    case 2:

    System.out.println("B");

    default :

    System.out.println("C");

    }


    }

    原理一样,凑合看