问题描述
设计一个函数,每次调用它时可以实现不同功能,第一次调用时求给定数组元素之和,第二次调用时求数组中最大值,第三次调用时求数组元素中各元素的平均值
程序代码
#include <stdio.h>
/*
*csdn学院--2016级
*目的:让代码见证成长(作为一个初学的菜鸟,如
*大家有发现错误,欢迎指正!)
*文件名称:Myfun193.c
*问题描述:指向函数的指针数组输出一维数组的总和,最大值,平均值
*作者:小臣小仁
*完成日期:2017年11月15日
*/
float arr_sum(float arr[],int n);
float arr_max(float arr[],int n);
float arr_ave(float *p,int n);
void process(float *p,int n,float(*pt)(float *p,int n));
int main()
{
float array[]={1.2,6.2,7.3,10.0,9.6,23.6};
int n=6;
printf("\n The sum of number elements is \n:");
process(array,n,arr_sum);
printf("\n The maximum of number elements is :\n");
process(array,n,arr_max);
printf("\n The average of array elements is: \n");
process(array,n,arr_ave);
return 0;
}
float arr_sum(float arr[ ],int n)
{
int k;
float sum=0;
for(k=0;k<n;k++)
sum+=arr[k];
return sum;
}
float arr_max(float arr[ ],int n)
{
float max=arr[0];
int k;
for(k=0;k<n;k++)
{
if(arr[k]>max)
max=arr[k];
}
return max;
}
float arr_ave(float *p,int n)
{
int k;
float sum=0,aver;
for(k=0;k<n;k++,p++)
sum+=*p;
aver=sum/n;
return aver;
}
void process(float *p,int n,float(*pt)(float *p,int n))
{
float result;
result=(*pt)(p,n);
printf("%6.2f",result);
}
输出结果
心得体会
作为一个初学的菜鸟,开始慢慢前进,多多少少感到有收获,由于水平有限,多多少少有错,望包涵