11.6 以下程序的输出结果是_____。
fun(int x)
{ int p;
if(x==0||x==1) return (3);
p=x-fun(x-2);
return p;
}
main()
{ printf("%d\\n",fun(9)); }
答案:7
11.7 以下程序的输出结果是_____。
fun(int n,int *s)
{ int f1,f2;
if(n==1||n==2) *s=1;
else
{ fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\\n",x);
}
答案:8
11.8 以下程序调用invert函数按逆序重新放置a数组中元素的值,a数组中的值在main函数中读入。请填空。
#define N 10
void invert(int *s,int i, int j)
{ int t;
if(i { t=*(s+i); *(s+i)=_____; *(s+j)=t;
invert(s,_____,j-1);
}
}
main()
{ int a[N],i;
for(i=0; i invert(a,0,N-1);
for(i=0; i printf("\\n");
}
答案:*(s+j) i+1 i
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