题目
3.该程序的功能是找出输入的3个数中最大的数,请填空。#include int main(){int max,a,b,c;underline(①) /*函数声明*/printf("nplease input 3 numbers:");scanf("%d%d%d",&a,&b,&c);underline(②) /*利用fun函数实现求a,b,c中的最大数*/printf("max=%d",max);return 0;}int fun(int x,int y){return (x>y?x:y);}
3.该程序的功能是找出输入的3个数中最大的数,请填空。
#include
int main()
{
int max,a,b,c;
$\underline{①}$ /*函数声明*/
printf("\nplease input 3 numbers:");
scanf("%d%d%d",&a,&b,&c);
$\underline{②}$ /*利用fun函数实现求a,b,c中的最大数*/
printf("max=%d",max);
return 0;
}
int fun(int x,int y)
{
return (x>y?x:y);
}
题目解答
答案
1. 填空①:需声明 `fun` 函数,写法为 `int fun(int x, int y);`。
2. 填空②:可采用 `max = fun(fun(a, b), c);` 或 `max = fun(a, fun(b, c));`。两者均能正确实现三数最大值计算。
3. 完整代码如下:
```c
#include
int main()
{
int max, a, b, c;
int fun(int x, int y); // ① 函数声明
printf("\nplease input 3 numbers:");
scanf("%d%d%d", &a, &b, &c);
max = fun(fun(a, b), c); // ② 利用 fun 函数求最大值
printf("max=%d", max);
return 0;
}
int fun(int x, int y)
{
return (x > y ? x : y);
}
```
此程序通过嵌套调用 `fun` 函数,可正确输出三个数中的最大值。
解析
考查要点:本题主要考查C语言中函数的声明与嵌套调用,以及如何利用两个数比较的函数来实现三个数的最大值计算。
解题核心思路:
- 函数声明:在调用函数前必须声明函数,否则编译器会报错。
- 嵌套调用逻辑:通过两次调用
fun函数,将三个数的比较拆解为两次两数比较,例如先比较前两个数,再将结果与第三个数比较。
破题关键点:
- 填空①:正确书写函数声明语句
int fun(int x, int y);。 - 填空②:利用
fun函数的嵌套调用,例如fun(fun(a, b), c)或fun(a, fun(b, c)),确保最终得到三个数中的最大值。
填空①:函数声明
在C语言中,若函数定义在调用之后,必须在调用前声明函数。本题中fun函数定义在main函数之后,因此需要在main函数中声明fun。声明格式为:
int fun(int x, int y);
填空②:嵌套调用求最大值
fun函数每次只能比较两个数,因此需要两次调用:
- 第一次调用:比较前两个数(如
a和b),得到较大的数。 - 第二次调用:将第一次的结果与第三个数(
c)比较,最终得到三个数中的最大值。
两种实现方式:
max = fun(fun(a, b), c);
先比较a和b,再将结果与c比较。max = fun(a, fun(b, c));
先比较b和c,再将结果与a比较。