用c语言,调用函数指针,输入十个数,求最大和最小值

如题所述

#include <stdio.h>
#define N 10
void func(int *arr,int n)
{
int i,max,min;
max=min=arr[0];
for(i=0;i<n;i++)
{
if(max<arr[i])
max=arr[i];
if(min>arr[i])
min=arr[i];
}
printf("最大值=%d\n",max);
printf("最小值=%d\n",min);
}
int main()
{
int a[N],i;
void (*pf)(int*,int); //声明函数指针
for(i=0;i<N;i++)
scanf("%d",&a[i]);
pf=func; //函数指针指向函数首地址
pf(a,N); //使用函数指针调用函数
return 0;
}

示例运行结果:

1 3 5 7 9 2 4 6 8 10

最大值=10

最小值=1

追问

第二行是什么意思,输入一个数组吗?

还有n和N分别什么意思

追答

第二行是个宏定义,定义了一个符号常量N,用这个符号常量来代替常量10。
n是个整型变量,在func函数中是个形参。

追问

那可以用10直接代替N吗

追答

当然可以啊,但是如果你是输入20个呢,那你就得把程序中所有10改为20,是吧,但是如果用符号常量的话,只需改成#define N 20,其他的无需修改,你说那种方式更好呢?

追问

调用函数时,主函数和max函数分别写什么?例如当两个数比大小时,应该在主函数比,还是max函数?

温馨提示:答案为网友推荐,仅供参考
相似回答