重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
以下是一个C语言程序,用二维数组定义一个自定义函数数组,并计算数组中的最大值:
创新互联公司是一家专业提供临渭区企业网站建设,专注与网站建设、网站设计、html5、小程序制作等业务。10年已为临渭区众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
```c
#include stdio.h
// 自定义函数,用于计算一个整数数组的最大值
int array_max(int arr[], int len) {
int max = arr[0];
for (int i = 1; i len; i++) {
if (arr[i] max) {
max = arr[i];
}
}
return max;
}
int main() {
// 定义一个二维数组,包含5个一维数组,每个一维数组包含6个整数
int arr[5][6] = {
{1, 2, 3, 4, 5, 6},
{6, 5, 4, 3, 2, 1},
{2, 4, 6, 8, 10, 12},
{3, 6, 9, 12, 15, 18},
{9, 8, 7, 6, 5, 4}
};
// 定义一个函数指针数组,用于存储array_max函数的地址
int (*func_array[5])(int[], int) = {array_max, array_max, array_max, array_max, array_max};
// 遍历二维数组,依次调用函数指针数组中的函数,计算每个一维数组的最大值
for (int i = 0; i 5; i++) {
int max = (*func_array[i])(arr[i], 6);
printf("Array %!d(MISSING) max value: %!d(MISSING)\n", i, max);
}
return 0;
}
```
在这个程序中,首先定义了一个包含5个一维数组的二维数组arr。然后,定义了一个函数指针数组func_array,用于存储array_max函数的地址。接下来,通过遍历二维数组arr,依次调用函数指针数组中的函数,计算每个一维数组的最大值,并输出结果。
这个程序中的函数指针数组可以用于存储任意数量的自定义函数,并且可以在需要时动态地改变其内容。
自定义函数实现
int max(int a,int b)
{
return ab?a:b;
}
max里的叫形参,可以随便用哪个都一样的,大概你是新手,不知道什么是形参和实参吧~
形参与实参的区别:
高级语言在设计程序模块时,模块名定义后,紧跟其后所定义的参数(括弧内)被称为形参(也称虚参)。当该模块被调用时,在主调模块中,出现在被调用的模块名后的参数被称为实参。实参代替虚参的过程被称为虚、实结合,也称换参。多数高级语言的换参是由编译系统来完成,比如C语言和FORTRAN语言亦是如此。BASIC语言的换参则是由程序设计人员来完成的。如果只允许实参向虚参传递,则被称为“单向传递”,C语言的变量类虚、实结合即是“单向传递”。如果同时允许虚参向实参传递,这种传递被称为“双向传递”,FORTRAN 语言定义的子程序即是如此。 当C语言的形参为数组时,形参不另辟存储单元,形参与实参共用内存存储单元。这样,可以节省内存。 C语言在定义函数的同时,对于有参函数,也同时定义了形参。在调用该函数的同时,也指明了实参。实参与形参在内存分别占有两套不同的存储单元(数组除外),但是形参只有在函数被调用过程中才分配存储单元,调用结束后形参占用的单元被释放。数组元素作为实参时,也做为变量来处理。
int
max(int
a,int
b,int
c);
//int
min(int
a,int
b,int
c);
void
main()
{
int
x,y,z;
printf("请输入三个数:");
scanf("%d%d%d",x,y,z);
printf("三个数选出最大数是%d\n",max(x,y,z));
//
printf("三个数选出最小数是%d\n",min(x,y,z));
}
int
max(int
a,int
b,int
c)
{
if
(a=ba=c)
return
a;
if
(b=ab=c)
return
b;
else
return
c;
}
/*int
min(int
a,int
b,int
c)
{
if
(a=ba=c)
return
a;
if
(b=ab=c)
return
b;
else
return
c;
}*/
另外,团IDC网上有许多产品团购,便宜有口碑