c语言求3个数中较大者

哪位帮我看看,谢谢#include<stdio.h>voidmain(){intmax(intx,inty,intz);inta,b,c,d;scanf("%d,%d,%... 哪位帮我看看,谢谢
#include<stdio.h>
void main()
{
int max(int x,int y,int z);
int a, b, c, d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",c);
}
int max(int x,int y,int z)
{
int s;
if(x>y) s=x;
if(x>z) s=x;
if(z>y) s=z;
if(z>x) s=z;
if(y>x) s=y;
if(y>z) s=y;
return(s);
}
展开
 我来答
她是我的小太阳
高粉答主

推荐于2016-04-18 · 醉心答题,欢迎关注
知道顶级答主
回答量:5.1万
采纳率:83%
帮助的人:9082万
展开全部
判断逻辑有问题,main函数里输出最大值应该取d的值而不是c的值。
例如:

x=3,y=1,z=2
if(x>y) s=x; //这里s变成x
if(x>z) s=x; //这里s仍然是x
if(z>y) s=z; //但是到这里s就变成z了,实际上最大值是x
改成如下代码:
int max(int x,int y,int z)
{
int s;
if(x>y && x>z) s=x;
else if(y>x && y>z) s=y;
else s=z;
return(s);
}
百度网友83cdc1c
推荐于2016-02-09 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:860万
展开全部
你的判断逻辑有问题。举个例子:

x=3,y=1,z=2
if(x>y) s=x; //这里s变成x
if(x>z) s=x; //这里s仍然是x
if(z>y) s=z; //但是到这里s就变成z了,实际上最大值是x
改成如下代码:
int max(int x,int y,int z)
{
int s;
if(x>y && x>z) s=x;
else if(y>x && y>z) s=y;
else s=z;
return(s);
}

另外,main函数里输出最大值应该取d的值而不是c的值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
数据迷宫导航者
2020-06-08 · TA获得超过3620个赞
知道大有可为答主
回答量:3093
采纳率:29%
帮助的人:390万
展开全部
定义三个变量,存放三个数
用if
else语句判断两个数大小
互相比较即得出最大数
用printf语句打印结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhezcb0755
2013-06-27 · TA获得超过643个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:117万
展开全部
  1. main函数打印的时候, 打印d, 而不是c, printf("max=%d\n", d);

  2. max函数求三个数最大,不需要这么多判断。只需要判断两次

    x > y ?  (s = x) : (s = y);

    if (z > s) s = z;

    return s;

  3. max在main下方,要先声明下比较好, 在main函数上方加一句int max(int, int, int);

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小指米娜
2013-06-27
知道答主
回答量:54
采纳率:0%
帮助的人:16.6万
展开全部
main函数里:printf("max=%d\n",c);改为printf("max=%d\n",d);
max函数里面:{if(x>y&&x>z)return x;if(y>x&&y>z)return y;if(z>y&&z>x)return z;}
PS:不能比较存在相等的,如果输入的数有相等的,还得完善。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式