鱼C论坛

 找回密码
 立即注册
查看: 19196|回复: 18

用if语句比较三个数中最大值

[复制链接]
发表于 2014-8-11 18:56:39 | 显示全部楼层 |阅读模式

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

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

x
代码如下
#include "stdio.h"
void main ()
{
        int a,b,c,max;
        printf("请输入三个数:");
        scanf("%d%d%d",&a,&b,&c);
        if (a>=b>=c||a>=c>=b) max=a;
        else if (b>=a>=c||b>=c>=a) max=b;
        else max=c;
        printf("the max is %d\n",max);
}
为什么输出的总是最后一个数c,用这个代码根本无法比较大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-11 19:10:12 | 显示全部楼层
这样比不是乱套了,给你个样儿:
#include "stdio.h"

void main ()
{
        int a,b,c,max;
        
        printf("请输入三个数:");
        
        scanf("%d%d%d",&a,&b,&c);
        
        if(a < b)//假设a与b有个是最大值 
        {
                max = b;
        }
        else
        {
                max = a;
        }
        
        if(max < c)//max和c比 
        {
                max = c; 
        }
        printf("the max is %d\n",max);
        
        system("pause");
        
}
8.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-11 19:29:06 | 显示全部楼层
if (a>=b>=c||a>=c>=b) max=a;  比较 如果 a>=b并且 谁大的值 和C比较  || 比较 如果 a>=c并且 谁大的值 和b比较
        else if (b>=a>=c||b>=c>=a) max=b;比较 如果 b>=z并且 谁大的值 和C比较  || 比较 如果 b>=c并且 谁大的值 和z比较
        else max=c;
你认为可以么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-11 19:55:07 | 显示全部楼层
逻辑混乱,先a和b比,然后用a和b的最大值和c比,这时候最大的才是3个数里面最大的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-11 20:04:22 | 显示全部楼层
本帖最后由 Justdoit 于 2014-8-11 20:07 编辑

为什么不用条件运算符呢? max1 = a>b ? a : b;   max = max1>c ? max1 : c;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-12 21:02:56 | 显示全部楼层
Angel丶L 发表于 2014-8-11 19:29
if (a>=b>=c||a>=c>=b) max=a;  比较 如果 a>=b并且 谁大的值 和C比较  || 比较 如果 a>=c并且 谁大的值 和 ...

还是不太懂,因为刚看的逻辑表达式,还不太明白。.............
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 21:05:46 | 显示全部楼层
firewater 发表于 2014-8-12 21:02
还是不太懂,因为刚看的逻辑表达式,还不太明白。.............

是的你这样 写的话逻辑确实比较混乱 如果 你非要搞懂这个 if的话 我可以建议你 对照自己的代码
写出伪代码 优先级 是 算术运算符 比 逻辑运算符大  你可以这样自己 检查下错了没有。 肯定是错了的。、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-12 21:54:20 | 显示全部楼层
Angel丶L 发表于 2014-8-12 21:05
是的你这样 写的话逻辑确实比较混乱 如果 你非要搞懂这个 if的话 我可以建议你 对照自己的代码
写出伪 ...

哦,我再看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 23:35:26 | 显示全部楼层
为什么我看懂了别人写 的代码后自己却还是不会,或者看懂后过不久就忘记了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-13 07:03:58 | 显示全部楼层
桃花飞舞 发表于 2014-8-12 23:35
为什么我看懂了别人写 的代码后自己却还是不会,或者看懂后过不久就忘记了呢?

要亲自动手写吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 17:03:00 | 显示全部楼层
Angel丶L 发表于 2014-8-12 21:05
是的你这样 写的话逻辑确实比较混乱 如果 你非要搞懂这个 if的话 我可以建议你 对照自己的代码
写出伪 ...

如果我要用逻辑运算符应该怎么改??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 17:04:57 | 显示全部楼层
firewater 发表于 2014-8-14 17:03
如果我要用逻辑运算符应该怎么改??

两个两个 判断 别三个一起判断容易混乱。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 17:26:57 | 显示全部楼层
Angel丶L 发表于 2014-8-12 21:05
是的你这样 写的话逻辑确实比较混乱 如果 你非要搞懂这个 if的话 我可以建议你 对照自己的代码
写出伪 ...

但是关系运算符优先级是大于逻辑或运算符的啊。我是这样理解的:a>=b>=c或a>=c>=b只要有一个为真,b和a c的比较也是这样的。如果都不符合,那么c肯定最大。我这样理解在哪个地方错了。请讲一下??谢谢         
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 17:50:01 | 显示全部楼层
firewater 发表于 2014-8-14 17:26
但是关系运算符优先级是大于逻辑或运算符的啊。我是这样理解的:a>=b>=c或a>=c>=b只要有一个为真,b和a c ...

是的 关系运算符优先级是大于逻辑或运算符的
a>=b>=c或a>=c>=b
a>=b>=c=
{如果 a>=b  那么 a 和C比较
不然 a<b   那么 b 和C比较}
a>=c>=b
{如果 a>=c  那么 a 和b比较
不然 a<c   那么 c 和b比较}
发生可能性很多的 我上面不是说过的么。

if (a>=b>=c||a>=c>=b) max=a;  比较 如果 a>=b并且 谁大的值 和C比较  || 比较 如果 a>=c并且 谁大的值 和b比较
        else if (b>=a>=c||b>=c>=a) max=b;比较 如果 b>=z并且 谁大的值 和C比较  || 比较 如果 b>=c并且 谁大的值 和z比较
        else max=c;
你认为可以么。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 20:17:51 | 显示全部楼层
本帖最后由 firewater 于 2014-8-14 20:21 编辑
Angel丶L 发表于 2014-8-14 17:50
是的 关系运算符优先级是大于逻辑或运算符的
a>=b>=c或a>=c>=b
a>=b>=c=

嗯,是我错了。没仔细看书,书上写了:关系表达式的值是一个逻辑值,0或1.而且它是左结合性。因此a>=b>=c,假设a,b,c为9  8  7,9>=8因此它的逻辑值为1而1<9因此逻辑值为0,同样其他的也可以这样分析。因为输入的这几个数都大于1因此逻辑值为0.所以一直执行esle后面的语句。   我以为电脑也可判断大小,忘记了它返回的是逻辑值。  而且我发现只要中间的数输入为0,那么它输出的一定是最大值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 20:59:55 | 显示全部楼层
firewater 发表于 2014-8-14 20:17
嗯,是我错了。没仔细看书,书上写了:关系表达式的值是一个逻辑值,0或1.而且它是左结合性。因此a>=b>=c ...

这样写也是可以的 但是思路必须要理清楚这样写就没问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 21:23:19 | 显示全部楼层
Angel丶L 发表于 2014-8-14 20:59
这样写也是可以的 但是思路必须要理清楚这样写就没问题。

嗯,如果有多个数(>3)比较应该怎样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-21 22:39:05 | 显示全部楼层
a>=b>=c这个有问题的
会先算a>=b 结果是0或1
然后在算0>=c或者1>=c
应该写成a>=b&&b>=c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 08:09:11 | 显示全部楼层
calton007 发表于 2014-8-21 22:39
a>=b>=c这个有问题的
会先算a>=b 结果是0或1
然后在算0>=c或者1>=c

嗯,懂了,以前对着还不熟悉,经常忘记这些规则
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-24 20:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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