qq_闪电韦德MVP_0
2015-08-15 10:24
#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;
}
为什么这个代码是错误的????输不出青铜,普通玩家
5000<=score<10000 作区间判断不是这样写的,应该为 5000 <= score && score < 10000
区间判断在逻辑上其实是两个条件判断用逻辑与相连:即 score大于等于5000 和 score小于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,打印出“白金玩家”
C语言入门
926937 学习 · 21533 问题
相似问题