2013年计算机二级考试C语言第十一章课后题及参考答案
第十一章
一、选择题
11.1 以下叙述不正确的是
A) C程序的main函数可以没有参数。
B) C程序的main函数可以有参数。
C) C程序的main函数若有参数时,第一个参数的值最少是1。
D) main函数的第一个参数必须是整型,其名字必须是argv,第二个参数可以定义成:char
*argv[],名字必须是argv。
答案:D
11.2 若有以下定义和说明,则对fun函数的正确调用语句是
A) a=fun; a(w); B) a=fun; (*a)(&c);
C) b=fun; *b(w);D) fun(b);
main()
{ int (*a)(int *),*b(),w[10],c;
.
.
.
}
fun(int *c) { ... }
答案:B
11.3 以下叙述正确的是
A) C程序中各函数之间既允许直接递归调用也允许间接递归调用
B) C程序中各函数之间不允许直接递归调用也不允许间接递归调用
C) C程序中各函数之间允许直接递归调用不允许间接递归调用
D) C程序中各函数之间不允许直接递归调用允许间接递归调用
答案:A
11.4 以下程序的输出结果是
A) 8 B) 30 C) 16 D) 2
long fib(int n)
{ if(n>2) return (fib(n-1)+fib(n-2));
else return (2);
}
main()
{ printf("%ld\\n",fib(6)); }
答案:C
计算机二级C语言章节练习在线测试 | ||
第11章 | 对函数的进一步讨论 |
二、填空题
11.5 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入
PROG ABCD EFGH IJKL 则输出结果为_____。
main(int argc, char *argv[])
{ while(--argc>0) printf("%s",argv[argc]);
printf("\\n");
}
答案:IJKLEFGHABCD 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 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("%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
计算机二级C语言章节练习在线测试
第11章
对函数的进一步讨论
相关阅读