第十二章 对C语言的进一步讨论
一、 选择题
1:C
main()函数的参数通常是两个,第一个必须是int型,第二个必须是字符串的指针。
2:D
程序的含义表明将输入的参数命令行看作字符串,将第2,4个字符串即(abcd h3)的字符个数相加,存放到len中,输出。
3:D
Int*f()表示返回值是指针的函数
4 :D
A,B,C选项正确,D选项中,f是指向函数的指针不能这样调用
5:B
函数的递归调用分为直接地归调用和间接递归调用两种,其中间接递归调用自己的称为间接递归调用
6:C
这是函数递归调用:
Fun(7)调用后等价于7-fun(5),又去调用fun(5),fun(5)又相当于5-fun(3)这时程序相当于计算7-(5-fun(3)),即7-5+fun(3), 又去调用fun(3),fun(3)又相当于3-fun(1),程序相当于计算7-5+3-fun(1),结果为2。
7:A
这是函数递归调用:x的输入值为10,调用fun(10),相当于以下过程:
fun(10)=10+fun(9);
10+fun(9)=10+9+fun(8)
10+9+fun(8)= 10+9+8+fun(7)
10+9+8+fun(7)= 10+9+8+7+fun(6)
10+9+8+7+fun(6)= 10+9+8+7+6+fun(5)
..........
10+9+8+7+6+5+4+3+2+fun(1)= 10+9+8+7+6+5+4+3+2+1;
结果为55
8:D
A项:预处理命令不一定要放在程序开头,B:一行只能有一条预处理命令。C宏名可以小写,但一般用大写进行区别,D正骨俄
9:C
f(x)为代参数的宏,f(8)相当于8*8,f(4)相当于4*4,同样f(4+4)相当于4+4*4+4,f(2+2) 相
当于2+2*2+2所以结果是4,3.
10:A
F(X,Y) 为代参数的宏,F(a++,b++)相当于(a++)*(b++),结果为12
11:M1+M2相当于(N*3)+(N*2),而N相当于5所以结果为25。
12:A
A正确,B作用域没有发生变化。C:不一定。比如数组,D:不像同。
13:A
略
14:B
主函数中的printf(“%c%c”,a,b);中a,b用的是全局变量,而fun(‘E’,’F’)传递给的是函数fun2()的局部变量。所以答案是B。
15:D
f()中的i是static类型,所以其值会保留为上一次起算的结果。
16:A
malloc()函数的括号里是字节数,根据题意,选择A
17:A
指针p和q指向同意存储区域,因此,scanf(“%s%s”,p,q);实际是给一块内存区域进行了两次付值,值为def,因此输出为def def.
18:A
略
19:D
略
20:B
C语言必须经过编译解释成为机器语言,生成EXE文件,才能执行。
21:C
略
22:A
略
23:D
非执行语句不一定会转换成二进制代码,例如程序的注释部分。
24:D
略
25:D
略
26:A
C语言中既有逻辑类型,也有急和类型。
二、 填空
1: c
解释:c作为实参用作宏定义的参数,起到临时存放变量值的作用。
2:findbig
解释:这是利用函数指针调用函数的题目,函数名相当于函数的入口地址,函数指针应该存放被调用函数的函数名。
3:/n
解释:fac初始值为1在循环中,利用/n相当于依次求取1、1/2,1/(3*2)…….
1/(1*2*3*4*4*6*7*8*9*10),利用smolloc函数把每一次fac的值进行累加,完成题目要求。
4:3*sizeof(double)
解释:mallo()函数是用来动态划分内存空间的,传递的参数是空间所占的内存大小,即字节数,按照题目要求分配3个double 型的内存单元,应该填入3*sizeof(double)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论