11.9 以下程序的输出结果是_____。
funa(int a,int b)
{ return a+b; }
funb(int a,int b)
{ return a-b; }
sub(int (*t)(),int x,int y)
{ return (*t)(x,y); }
main()
{ int x,(*p)(int ,int);
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
printf("%d\\n",x);
}
答案:17
11.10 以下程序中的trap函数是一个用梯形法求定积分的通用函数,梯形法求定积分s的公式为:
n-1
x=((f(a)+f(b))/2+∑ f(a+i*h)*h, h=│(a-b)/n│
i=1
其中,n为积分小区间数,以下程序调用trap函数求积分,被积函数是:
f(x)=x*x+3*x+2,且 n=1000,a=0,b=4。
#include "math.h"
double trap(double _____,double a,double b)
{ double t,h; int i,n=1000
t=0.5*((*fun)(a)+(*fun)(b));
h=fabs(a-b)/(double)(n);
for(i=1; i<=n-1; i++) t=t+_____;
t=t*h;
return (t);
}
double mypoly(double x)
{ return (x*x+3.0*x+2.0); }
main()
{ double y,(*pf)(double);
pf=_____;
y=trap(pf,0.0,4.0);
printf("%f\\n",y);
}
答案:(*fun)(double) (*fun)(a+i*h) mypoly