以下语句有什么错误(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:53:52
比较三个整数的大小,我是初学,不知有什么错误,望高手指点.

#include <stdio.h>
void main()
{
int max(int x,int y,int z);
int a,b,c,d;
printf("请输入三个整数:\n";
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("三个数中%d的值最大\n",d);
}

int max(int x,int y,int z)
{
int m;
if (x>y>z) x=m;
if (x>z>y) x=m;
if (y>x>z) y=m;
if (y>z>x) y=m;
else z=m;
return (m);
}

还有,max函数中比较大小的部分很繁琐,怎么简化?

问题应该不大,主要是以下几个方面:
1.一般来说,比较好的程序书写顺序是,先声明函数,然后写主函数,然后再写那些自定义的函数,int max(int x,int y,int z);写在void main()前比较好,最好不要在主函数main()里声明
2.printf("请输入三个整数:\n"; 应该是键盘输入的问题吧,少了括号,
3.if (x>y>z) x=m;
if (x>z>y) x=m;
if (y>x>z) y=m;
if (y>z>x) y=m;
else z=m;
中if与else应该是紧密配套的,
还有就是
赋(传)值操作符"="使用有问题,
遵循
“左值=表达式”
如:
你的x=m是把m 的值给x,而m根本没初试化,所以运行可能就有问题,
应该调过来,m=x;

你的比较大小规则
可以用逻辑操作符来书写
还有一种方法用条件操作符“?”:
格式
(条件表达式)?(条件为真时的表达式):(条件为假时的表达式)

如:
m=(z>((x>y)?x:y))?z:((x>y)?x:y);
仔细比较一下

三个数的比较可以改成两两比较,这样会比较的简单
int max(int a,int b, int c)
{
int temp;
if(a<b)
{
temp=a;
a=b;
b=temp;
}
if(a<c)
{
temp=a;
a=c;
c=temp;
}
if(b<c)
{
temp=b;
b=c;