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

请教一下???

#include <stdio.h>

int main() 

{

    int score = 7200;

    //完善一下代码

 if(score>=10000)   

    {

        printf("钻石玩家");

    }

  else if(5000<=score<10000)  

    {

        printf("白金玩家");    

    }

  else if(1000<=score<5000)  

    {

        printf("青铜玩家");     

    }

  else

    {

        printf("普通玩家");    

    }

    return 0;

}

为什么这个代码是错误的????输不出青铜,普通玩家

正在回答

2 回答

5000<=score<10000 作区间判断不是这样写的,应该为 5000 <= score && score < 10000

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

区间判断在逻辑上其实是两个条件判断用逻辑与相连:即 score大于等于5000score小于10000 同时成立。 所以要用逻辑与运算符(&&)将两个条件判断相连。

不过 5000<=score<10000 也是一个合法的复合语句,但C是这样解释它的:(5000<=score)<10000。5000<=score的结果是true或false,然后这个bool值再与10000做大小判断。因为ture会转换为1,false会转换为0,于是当score小于5000,则整个表达为 0<10000;当score大于等于10000,整个表达式为 1<10000,不管是哪种情况,整个表达式都是true。

所以你的代码,只要score小于10000,都会进入第一个else if,打印出“白金玩家”

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

qq_闪电韦德MVP_0 提问者

明白了,谢谢你
2015-08-15 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

请教一下???

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号