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

看下这个语句白金玩家那有什么错误?

#include <stdio.h>
int main()
{
    int score = 7200;
    //完善一下代码
    if(score>10000)
    {
        printf("钻石玩家");
    }
    else if(score>=5000)
    {
        printf("白金玩家");   
    }
    else if(5000>score>=1000)  
    {
        printf("青铜玩家");    
    }
    else(score<1000)
    {
        printf("普通玩家");   
    }
    return 0;
}

正在回答

2 回答

第三个 else if 中判断表达式你写的是 5000>score>=1000,这无法完成区间判断的功能,此表达式永远为 false。

你可以查看一下运算符的优先级,> 和 >= 优先级相同,且左结合,故C语言是这样解释这个表达式的:

(5000 > score) >= 1000

也就是会先算 5000 > score,结果肯定是true。于是表达式后面的部分就变成了true与1000做比较。为了能和1000这个整型做比较,true也会被转换为整型,这样true就被转换成了整型数字1,所以整个表达式就是 1 >= 1000,显然结果是false。


要实现区间判断,应该用逻辑与运算符连接两个关系运算符:5000 > score && score >= 1000


还有如楼上所说,最后一个else后面不应加上判断部分。 只有 if 后可以加上小括号括起的判断表达式,况且经过前面几个 if 的筛选,这里肯定是小于1000的数,也无需再用else if来判断了。

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

qq_简简单单_35 提问者

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

最后的else错了 

else(score<1000)  //这里不需要条件的orz。。。。

else{
    printf("普通玩家"); 这样就ok了
}


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

举报

0/150
提交
取消

看下这个语句白金玩家那有什么错误?

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