关于if()的用法,要判断一个数是否处于某一个范围,为什么不能写成 if(90<=p<=100)?

我想让程序判断输入的成绩位于哪个区间范围。intmain(){intp;scanf("%d",&p);if(90<=p<=100)printf("成绩优秀");elsep... 我想让程序判断输入的成绩位于哪个区间范围。
int main()
{
int p;
scanf("%d",&p);
if(90<=p<=100)
printf("成绩优秀");
else
printf("不及格");
}
运行的结果,无论我输入什么数值,输入20,输入600,dos框运行结果都是输出“成绩优秀”。
我看了一晚,我把if的判断条件那里改成 if(90<=p&&p<=100),结果才终于行了。
但是我不懂为什么不能写成 if(90<=p<=100)?
还有,在这个程序里,我该如何限定所输入的p数值,不能超过100啊。因为我输入600,一样运行,结果却是输出“不及格”
展开
 我来答
qscorpius_fly
2014-06-10 · TA获得超过1858个赞
知道小有建树答主
回答量:811
采纳率:80%
帮助的人:302万
展开全部
<=是双目运算符,90<=p<=100等价于(90<=p)<=100,先计算括号里面表达式的值,90<=p(假设此时p的值为95),则这个表达式值为1,接着判断1<=100,表达式的值变为0了,因此要表达这个意思必须写成90<=p && p<=100
要限制输入的p数值,必须在输入的时候进行检查,例如可以用一个检查循环,若输入的数值超过100,那么提示输入错误,要求用户重新输入,否则退出循环执行后面的程序,程序可以改为:
int main()
{
int p;
while(1)
{
scanf("%d“,&p);
if(p>100 || p<0) printf("输入错误,请重新输入成绩:"); //若输入超过范围提示错误继续循环
else break; //退出循环
}
if (90<=p &&p<=100)
printf("成绩优秀");
else
printf("不及格");
}
来自:求助得到的回答
chao1575639478
2014-06-10 · TA获得超过1391个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:218万
展开全部

只有一种可能,那就是这个表达式换算成正常的表达式就是90<=p || p<=100,两个表达式取或的关系

if(P<100 && p>0)
{
if(90<=p<=100)
printf("成绩优秀");
else
printf("不及格");
}
}else
{
printf("输入数据格式不正确");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT孤鹜
2014-06-10 · TA获得超过4197个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3499万
展开全部
90<=p<=100

它从左开始计算
90<=p 这是个逻辑表达式 值为真或假 真为1 假为0
那么 肯定小于100

所以一直是真

你可以吧 if(90<=p<1) 测试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d7d03b3
2014-06-10
知道答主
回答量:13
采纳率:0%
帮助的人:8.1万
展开全部
90 <= p 这个表达式的值为0或1 该表达式的值再与 100比较,总是小于等于100的,所有恒为真!应该写成( 90 <= p ) && ( p <= 100 )另外,你需要注意你的编程风格,代码要写的美观,可以看看那些写的好的代码
追问
那在目前这个小程序里,我该如何限定所输入的数值不超过100呢
因为当我在dos框里输入600时,600不位于【90--100】这个区间,所以它就跳到else那里执行了,我不希望出现这种情况啊。
int p;
scanf("%d",&p);
if(90<=p&&p<=100)
printf("成绩优秀");
else
printf("不及格");
追答
再加个判断就ok了,
if ( p 100 )
printf ( " 输入错误,请输入0到100之间的成绩\n " );
else if ( 90 <= p && p <= 100 )
printf ( " 成绩优秀 \n " );
else

printf ( " 不及格 \n " );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式