c 语言中 比较三个数大小的程序怎么写

来源:百度知道 编辑:UC知道 时间:2024/05/11 21:13:16
main()
{int a,b,c,k;
scanf("%d,%d,%d\n",&a,&b,&c);
k=max(a,b,c);
printf("the max=%d",k);
}
int max(int x,int y,int z)
{int s;
if(x>y)
if(x>z)
s=x;
else
s=z;
else
if(y>z)
s=y;
else
s=y;
return s;
}
我写的是这样
但出现的情况很怪异
我输入3个数 2,1,3它显示的是正确的3
但是输入其他的比如我输入100,200,300
显示的是200
真是奇怪啊
有能人能解答一下吗??
这个程序正确吗
lirenhong_0108
对不起
你的程序是错的
首先你会在一个程序中有两个输出
另外我在main里申明了跟没申明max效果都一样
还是那个问题
jasonlv8的程序是对的
不过好象理解起来有点困难
偶是个初学者
呵呵
有点看不明白
谢谢大家解答
就我这种形式的程序(保持这种形式)
怎么样改才会是正确呢
最后补充+++++++++++++++++++++++++
我发现问题了
原来是最后的if(y>z) s=y;
else s=z;
return s;
我在上面写的是两个y了~
真是粗心大意啊~~
再次谢谢大家了

#include<stdio.h>
void main()
{
int a,b,c,max;
printf("输入数:");
scanf("%d%d%d",&a,&b,&c);

if(a>b&&a>c)
{max=a;
printf("max=%d",a);
}
else if(b>a&&b>c)
{ max=b;
printf("max=%d",b);
}
else
max=c;
printf("max=%d",c);

}这个容易懂些,你的max()在main()前没有声明。不起作用。自定义函数中的if(x>y)if(x>z)应写在一起,仔细对照你的自定义函数和这个,就晓得了。而且自定义函数,声明用函数原形。调用函数名。

好像括号没有 加上看看

首先,你调用的是int类型,所以不用声明。
其次,我建议你搞清楚点if和else的对应关系,这样很容易弄混。你的错误应该在于:当y>x时,你的程序就直接跳到最后一个else那里了,所以就只有y输出。
第三,你得保证每个合法输入都有结果,所以最好加入大于等于号。
下面给出我的程序(虽然也没有考虑等于):
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("max is %d\n",(b>a||c>a)?((b>c)?b:c):a);
}

if(x>y)
if(x>z)中间应该还有一点内容

max()没有在main中声明