C语言函数的调用

来源:百度知道 编辑:UC知道 时间:2024/06/24 23:54:59
大哥大姐们帮帮忙,2题函数调用的题。第一题:int f1(int x,int y)
{ return x>y?x:y;}
int f2(int x,int y)
{ return x>y?y:x;} main()
{int a=4,b=3,c=5,d,e,f; d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);求程序运行后的输出结果。谢谢!
可是答案不是5,4,3,是3,4,5,难道是我的书有问题?新华买的啊!我怎么都想不通!

F1的意思是如果X〉Y,则返回X,其他返回Y;
F2刚刚相反。

SO

D=5;E=3;

最后输出 4+3+5-5-3=4

你要答案是d=5,f=4,e=3,可以这样写,
//-------------------------
int Max(int x,int y)
{
return x>y?x:y;
}
int Min(int x,int y)
{
return x>y?y:x;
}
int main()
{
int a=4,b=3,c=5,d,e,f;
d=Max(a,b);
d=Max(d,c);
e=Min(a,b);
e=Min(e,c);
f=a+b+c-d-e;
printf("d=%d,f=%d,e=%d\n",d,f,e);

return 0;
}

把函数写得标准一点,函数名不要用f1,f2之类了。
另外,你还可以把Max()和 Min()用宏定义的:
#define MAX(a,b) (a)>(b)?(a):(b)
#define MIN(a,b) (a)>(b)?(b):(a)

答案就是5,4,3呀!难道你要输出d=5,f=4,e=3?
printf("d=%d,f=%d,e=%d\n",d,f,e);

F1比大,
F2比小,结果
5,4,3

f1是选出x,y中的最大数;
f2是选出x,y中的最小数;
所以 d=5;e=3;f=4;
结果是 5,4,3