初级C语言问题!! 请进。

来源:百度知道 编辑:UC知道 时间:2024/06/28 05:49:04
#include<stdio.h>
void main()
{
int a,b,c,m;
int max(int a,int b);
scanf("%d%d%d",&a,&b,&c);

m=max(a,max(a,b));
printf("max=%d\n",m);

}

int max(int a,int b)
{
int z;
if (a>b)
z=a;
else
z=b;

return(z);
}

以上是我在知道吧的一个回答贴里看到的代码
这是从三个数中判断最大数max 的程序
我输入在TC2.0内运行后 结果是这样的
当输入 1 1 2 结果显示 max=1 是错误的
可是输入 1 2 1 时 结果显示 max=2 又是正确的.
不知是哪里出了问题.

另外我不明白程序中第7行 m=max(a,max(a,b)); 是什么意思. 为什么参数内又有一个max(a,b)

^^ 先谢谢了.

同学,你好,我看到你的问题了,原因就出在你不明白的这个地方,
m=max(a,max(a,b));本身的意思是:函数的嵌套。

它的运算步骤是:设定 xx=max(a,b)
则:m=max(a,max(a,b));首先运算 xx=max(a,b)
然后再运算:m=max(a,xx),
这道题错误的原因不是在你不理解这个地方,而是你得到的结果前两个参数的最大值,
若想得到三个数据的最大值,需要更改的地方是:
m=max(a,max(b,c));

意思是先比较 b,c中的最大值,然后再和a比较取出最大值。

m=max(a,max(a,b));
改成m=max(c,max(a,b));

max(a,b)是返回a和b的较大者,
然后
m=max(c,max(a,b));
返回值再和c比较,得出较大者,赋值给m

m=max(a,max(a,b)); 是什么意思.
这是比较 而且你只比较了a和b,

就是只比较了你输入的前2个数字

所以导致 你输入 1 1 2时 a=1,b=1,c=2但是你程序没有比较C

所以显示1!

为什么参数内又有一个max(a,b)

比较 a和b的值取出较大的!

m=max(a,max(a,b));
这句错了...变成m=max(c,max(a,b));就行了...
这句的意思是先将a与b比罗..大的那个再与c比较..简单的嵌套..

m=max(a,max(a,b)); 应该改成m=max(c,max(a,b)); max(a,b)放在那个函数中是进行调用,因为函数返回了一个整型的值!可以直接用于比较。

m=max(a,max(a,b)); 改成m=max(a,max(b,c));
记得给我加分哦