main(int argc, char *argv[])
{ while(--argc>0) printf(\printf(\ } 答案:
IJKLEFGHABCD
11.6 以下程序的输出结果是_____。 fun(int x) { int p; if(x==0||x==1) return (3); p=x-fun(x-2); return p; } main()
{ printf(\ } 答案: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(\ }
答案:
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 for(i=0; i 答案:*(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(\ } 答案: 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 \ 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(\ } 答案:(*fun)(double) (*fun)(a+i*h) mypoly 第十二章 一、选择题 12.1 以下程序的输出结果是 A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3 main() { int i=1,j=3; printf(\{ int i=0; i+=j*2; printf(\} printf(\ } 答案:B 12.2 以下程序的输出结果是 A) 1 2 3 4 B) 4 3 2 1 C) 0 0 0 0 main() { int a[]={1,2,3,4},i,x=0; for(i=0; i<4; i++) { sub(a,&x); printf(\printf(\ } sub(int *s,int *y) { static int t=3; *y=s[t]; t--; } 答案:B 12.3 以下程序的输出结果是 A) 8,17 B) 8,16 C) 8,20 main() { int k=4,m=1,p; p=func(k,m); printf(\p=func(k,m); printf(\ } func(int a,int b) { static int m,i=2; i+=m+1; m=i+a+b; return (m); } 答案:a 12.4 以下程序的输出结果是 A) 34756 B) 23445 C) 35745 void fun(int *s) { static int j=0; do s[j]+=s[j+1]; while (++j<2); } main() { int k,a[10]={1,2,3,4,5}; for(k=1; k<3; k++) fun(a); for(k=0; k<5; k++) printf(\ } 答案:C 12.5 以下程序的输出结果是 D) 4 4 4 4 } D) 8,8 D) 12345 A) 3 B) 6 C) 5 D) 4 f(int a) { int b=0; static int c=3; a=c++,b++; return (a); } main() { int a=2,i,k; for(i=0; i<2; i++) k=f(a++); printf(\ } 答案:D 12.6 以下程序的输出结果是 A) 1 B) 2 C) 7 D) 10 int m=13; int fun2(int x,int y) { int m=3; return (x*y-m); } main() { int a=7,b=5; printf(\ } 答案:B 12.7 C语言中,形参的缺省的存储类说明是 A) auto(自动) B) static(静态) C) register(寄存器) D) extern(外部) 答案:A 12.8 以下叙述中不正确的是 A) 一个变量的作用域完全取决于变量定义语句的位置。 B) 全局变量可以在函数以外的任何部位进行定义。 C) 局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用。 D) 一个变量说明为static存储类是为了限制其它编译单位的引用。 答案:C 二、填空题 12.9 以下程序的输出结果是______。 main() { int a=3,b=2,c=1; c-=++b; b*=a+c; { int b=5,c=12; c/=b*2; a-=c; printf(\ a+=--c; } printf(\ } 答案:2,5,1,2,3,-2 12.10 以下程序的输出结果是_____。 void fun() { static int a; a+=2; printf(\ } main() { int cc; for(cc=1; cc<=4; cc++) fun(); printf(\ } 答案:2468 第十三章 编译预处理和动态存储分配