您的位置:首页 > 编程语言 > C语言/C++

《C语言入门经典》Ivor Horton第九章练习题

2015-11-13 16:17 344 查看
</pre><pre name="code" class="cpp">//习题9.2 实现函数原型:
//double add(double a,double b);      //Returna a+b
//double subtract(double a,double b); //Returna a-b
//double multiply(double a,double b); //Returna a*b
//double array_op(double array[],size_t size,double(*pfun)(double,double));
//array_op().函数的参数是:要运行的数组、数组元素数目以及一个函数指针
//,该函数指针指向的函数定义了在连续几个元素上应用的操作。在实现array_op()函数时,
//将subtract()函数传送为第三个参数,subtract()函数会用交替符号组合这些元素。
//因此,对于有4个元素x1、x2、x3、x4的数组,subtract()函数会计算x1-x2+x3-x4的值。
//乘法运算则得到这些元素之积x1*x2*x3*x4。
//		用适当的main()版本演示这些函数的运作。
#include<stdio.h>
double add(double a,double b);
double subtract(double a,double b);
double multiply(double a,double b);
double array_op(double array[],size_t size,double (*pfun)(double,double));
int k=0;
int main(void)
{
double a=0.0;
double b=0.0;
size_t size=0;
double result=0.0;
int i=0;
int j=1;
char y;
double(*pfun)(double,double);
double *array=NULL;
array=(double*)malloc(j*8);
do
{
printf("\n1");
if(i>=j)
{
j++;
array=(double*)realloc(array,j*8);
}
printf("\n2");
scanf("%lf",&array[i++]);
printf("\n3");

}while((y=getchar())!='\n');
for(int j=0;j<i;j++)
printf("\n%lf",array[j]);
pfun=add;

result=array_op(array,i,pfun);
printf("\nin add result=%lf",result);
pfun=subtract;

result=array_op(array,i,pfun);
printf("\nin subtract result=%lf",result);
pfun=multiply;

result=array_op(array,i,pfun);
printf("\nin multiply result=%lf",result);
return 0;
}
double add(double a,double b)
{

return b+a;
}
double subtract(double a,double b)
{

return b-a;
}

double multiply(double a,double b)
{

return b*a;
}
double array_op(double array[],size_t size,double (*pfun)(double ,double))
{
--size;

if(size<=0)
{

return array[size];
}

return pfun(array[size],array_op(array,size,pfun));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数 递归