注册 登录
编程论坛 C语言论坛

输出三个数中最大的一个(我想问一下这个代码为什么不行?)

望卿安好 发布于 2020-03-08 21:32, 1281 次点击
#include<stdio.h>
int max(int x,int y,int z)
{
    int m;int e;
    if (x+y+z<3*x) m=x;
    else e=y+z;
    if (e<2*y) m=y;
    else m=z;
    return m;
}
int main()
{
    int a,b,c,d;
    scanf("%d%d%d",&a,&b,&c);
    d=max(a,b,c);
    printf("%d\n",d);
    return 0;
 }
我的这个代码在DEVC++里能用,但在OJ系统里提示答案错误33%,题目要求输入一行数组,我想知道这个代码有没有错误(假如不针对题目)
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2020-3-8 21:41编辑过]

2 回复
#2
forever742020-03-08 22:00
100 102 2
#3
望卿安好2020-03-09 10:03
回复 2楼 forever74
嗯,我明白了,我的这个代码是错的,输入三个数x,y,z,对于其中大于平均数的一个或两个,当我用x+y+z去判断时都会判断为最大值。比如你举的这个例子,100,102,2,平均数为68,当我用这三个数的和204去判断时,100也会被判定为最大值,因为204<3*100,而100并不是最大值。多谢提醒
1