鱼C论坛

 找回密码
 立即注册
查看: 2617|回复: 12

为什么老是输出D呢?问题在哪?

[复制链接]
发表于 2012-2-1 21:38:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);//输入小于60的数正常 显示的是 E ,如果输入大于等于70的数只显示D ,比如说输入80吧应该显示B但是显示D.
if(a<60)
{
  printf("E\n");
}
    else if(a>60 || a==60 && a<70)
{
  printf("D\n");     
}
else if(a>70 || a==70 && a<80)
{
  printf("C\n");
}
else if(a>80 || a==80 && a<90)
{
  printf("B\n");
}
else
{
  printf("A\n");
}
  
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-1 22:04:35 From FishC Mobile | 显示全部楼层

回帖奖励 +1 鱼币

应该是打印
D
C
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-1 22:23:27 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 08:39:33 From FishC Mobile | 显示全部楼层
没错是打印D,这个是逻辑错误,关键是IF语句中条件的问题,仔细想想。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 08:57:07 | 显示全部楼层
  else if(a>60 || a==60 && a<70)
{
  printf("D\n");     
}
好好看看这个语句,a>60的时候不管||后面是什么它都认为是真,便输出D,
改成下面试试:
  else if(a>=60 && a<70)
{
  printf("D\n");     
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 09:15:16 | 显示全部楼层
else if(a>60 || a==60 && a<70)
全部改为:

a>=60 && a<70 形式
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 17:18:29 | 显示全部楼层
比如输入80,在
else if(a>60 || a==60 && a<70)
中因为80>60所以a>60成立,||短路,该条件为真,打印D,后面的else if和else都被跳过
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-2 18:16:16 | 显示全部楼层
Cabernet 发表于 2012-2-2 08:57
else if(a>60 || a==60 && a60的时候不管||后面是什么它都认为是真,便输出D,
改成下面试试:
  else  ...

谢谢 好了 。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-2 18:17:15 | 显示全部楼层
Cabernet 发表于 2012-2-2 08:57
else if(a>60 || a==60 && a60的时候不管||后面是什么它都认为是真,便输出D,
改成下面试试:
  else  ...

  这么简单的问题让我想破脑袋都没看出来。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-6 12:31:35 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {
  4. int a;
  5. scanf("%d",&a);//输入小于60的数正常 显示的是 E ,如果输入大于等于70的数只显示D ,比如说输入80吧应该显示B但是显示D.
  6. if(a<60)
  7. {
  8.   printf("E\n");
  9. }
  10. else if(a>=60 && a<70)
  11. {
  12.   printf("D\n");     
  13. }
  14. else if(a>=70 && a<80)
  15. {
  16.   printf("C\n");
  17. }
  18. else if(a>=80 && a<90)
  19. {
  20.   printf("B\n");
  21. }
  22. else
  23. {
  24.   printf("A\n");
  25. }

  26. }
复制代码
你的代码 那个判断 我来解释下

else if(a>60 || (a==60 && a<70))  执行时候 成这样了  当 a>60 结果就已经好了 除非你改成这样
else if((a>60 || a==60) && a<70)  这样就OK了  所以你多注意下执行过程吧
不然的话 你可以调试看看 汇编过程    不知道汇编可以看  零基础入门学习汇编

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-6 14:03:42 | 显示全部楼层
把判断条件前面的两个条件加上括号.if((a>70 || a==70) && a<80)或都写成if (a >= 70 && a < 80)
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-11 02:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表