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

帮我看看这个为啥不对

#include <stdio.h>
int main()
{
    int score = 87; //考试分数为87分
      
    switch(score)
    {
        /*想想以下代码为什么用这种方式;
          这种方式的好处?*/
        case 100:
        case score<100&&score>=90:
            printf("等级A");
            break;
        case score<90&&score>=80:
            printf("等级B");
            break;          //这里是不是缺点什么?           
       
        case score>=60&&score<=79:
            printf("等级C");
                  break;          //这里是不是缺点什么? 
        default:
            printf("等级D");
            break;   
    }
    return 0;
}

正在回答

3 回答

switch 语句的作用是把switch后面括号中的变量和case后的值做匹配,匹配上之后就从那个case开始向下执行(同时忽略掉后面的case标号,连同后续case中的语句一起执行下去)。

case后的那个值只能是整型常量,而且只用于和switch后括号中的变量做比较,不能用来做判断。

你代码中case后是由两个条件判断表达式组成的逻辑表达式,其结果是ture或false,因为case后只接受只接受整型常量,所以编译器会报错。

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

小休闲Cyrus 提问者

非常感谢!
2015-09-04 回复 有任何疑惑可以回复我~

这是一个小技巧..

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

case选择语句的值应该是常量表达式,不能是条件表达式。你的代码可以改为:

switch(score/10)
{
    case 10:
    case 9:
        printf("等级A");
        break;
    case 8:
        printf("等级B");
        break;       
    
    case 6:
    case 7: 
        printf("等级C");
              break;
    default:
        printf("等级D");
        break;    
}


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

小休闲Cyrus 提问者

谢谢 知道啦
2015-09-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

帮我看看这个为啥不对

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