2013年计算机二级考试C语言第十三章课后题及参考答案
第十三章 编译预处理和动态存储分配
一、选择题
12.1 以下程序的输出结果是
A) 15
B) 100
C) 10
D) 150
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i,j,k;
i=10; j=15; k=10*MIN(i,j);
printf("%d\\n",k);
}
答案:A
13.2 以下程序中的for循环执行的次数是
A) 5
B) 6
C) 8
D) 9
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{ int i;
for(i=1; i<=NUM; i++);
}
答案:C
13.3 以下程序的输出结果是
A) 11
B) 12
C) 13
D) 15
#include "stdio.h"
#define FUDGF(y) 2.84+y
#define PR(a) printf("%d",(int)(a))
#define PRINT1(a) PR(a); putchar(\’\\n\’)
main()
{ int x=2;
PRINT1(FUDGF(5)*x);
}
答案:B
计算机二级C语言章节练习在线测试 | ||
第13章 | 编译预处理和动态存储分配 |
13.4 以下程序的输出结果是
A) 1
B) 7
C) 9
D)11
fut(int **s,int p[2][3])
{ **s=p[1][1]; }
main()
{ int a[2][3]={1,3,5,7,9,11},*p;
p=(int *) malloc(sizeof(int));
fut(&p,a);
printf("%d\\n",*p);
}
答案:C
13.5 若要使指针变量p指向一个double类型的动态存储单元,在下划线处应填入
A) double
B) double *
C) (* double)
D) (double *)
double *p;
p=_____malloc(sizeof(double));
答案:D
13.6 以下程序的输出结果是
A) 11.10
B) 12.00
C) 21.10
D) 1.10
void fun(float *p1,float *p2,float *s)
{ s=(float *)calloc(1,sizeof(float));
*s=*p1+*p2++;
}
main()
{ float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);
printf("%5.2f\\n",*s);
}
答案:D
13.7 以下叙述中正确的是
A) 用#include包含的头文件的后缀不可以是“.a”。
B) 若一些源程序中包含某个头文件;当该头文件在错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译。
C) 宏命令行可以看做是一行C语句。
D) C编译中的预处理是在编译之前进行的。
答案:D
计算机二级C语言章节练习在线测试 | ||
第13章 | 编译预处理和动态存储分配 |
二、填空题
13.8 以下程序的输出结果是_____。
#define PR(ar) printf("ar=%d ",ar)
main()
{ int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3; j; j--)
tch(j)
{ case 1:
case 2:PR(*p++); break;
case 3:PR(*(--p));
}
}
答案:ar=9 ar=9 ar=11
13.9 下面程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,
调用outone函数输出此动态存储单元中的数据。请填空。
#include "stdio.h"
getone(int **s)
{ *s=(____)malloc(sizeof(int)); }
assone(int *s)
{ scanf("%d",_____); }
outone (int *b)
{ printf("%d\\n",_____); }
main()
{ int *p;
getone(&p); assone(p); outone(p);
}
答案:int *s *b
计算机二级C语言章节练习在线测试 | ||
第13章 | 编译预处理和动态存储分配 |