qq_简简单单_35
2015-10-17 09:14
#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;
}
第三个 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来判断了。
最后的else错了
else(score<1000) //这里不需要条件的orz。。。。
else{ printf("普通玩家"); 这样就ok了 }
C语言入门
926210 学习 · 20797 问题
相似问题
回答 2
回答 1
回答 8
回答 2
回答 4