C语言程序问题,请问怎样理解比较容易点!满分感谢……

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:26:31
题目~~~
函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数返回值。
例如,当a=3,b=5,c=4时,中间的数为4。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

程序如下(填空题)

#include <stdio.h>
int fun(int a, int b, int c)
{
int t;
t = (a > b) ? (b>c ? b : (a>c ? c : ___1___)) :
((a > c) ? ___2___ :
((b > c) ? c : ___3___));
return t;
}
main()
{
int a1 = 3, a2 = 5, a3 = 4, r;
r = fun(a1, a2, a3);
printf("\nThe middle number is : %d\n", r);
}

首先是?:运算符的等价表达:
表达式1?表达式2:表达式3
等价于如下c语句
if(表达式1)
表达式2;
else
表达式3;

其次根据“?:”运算符的运算优先级低于“()”运算符:
t = (a > b) ? (b>c ? b : (a>c ? c : ___1___)) : ((a > c) ? ___2___ : ((b > c) ? c : ___3___)); 此式可分解为
表达式1=(a > b)
表达式2=(b>c ? b : (a>c ? c : ___1___))
表达式3=((a > c) ? ___2___ : ((b > c) ? c : ___3___))

也即
if(a > b) //表达式1
(b>c ? b : (a>c ? c : ___1___));//表达式2,这里继续分解
else
((a > c) ? ___2___ : ((b > c) ? c : ___3___));//表达式3这里继续分解

同理再继续分解表达式2和表达式3就可以了。

#include <stdio.h>
int fun(int a, int b, int c)
{
int t;
t = (a > b) ? (b>c ? b : (a>c ? c : ___a___)) :
((a > c) ? ___a___ :
((b > c) ? c : ___b___));
return t;
}
main()
{
int a1 = 3, a2 = 5, a3 = 4, r;
r = fun(a1, a2, a3);
printf("\nThe middle number is : %d\n",