1、编译预处理和动态存储分配(一)及答案解析(总分:13.00,做题时间:90 分钟)一、B选择题/B(总题数:7,分数:7.00)1.动态分配一整型数据长度的空间,使指针 p 指向该存储空间,则下列空缺处应填入的正确语句是( )。 int*p; p=_malloc (sizeof(int);(分数:1.00)A.intB.int*C.(*inD.(int*)2.下列程序执行后的输出结果是_。 #define MA(x) x*(x-1) main()int a=1,b=2;printf(“%d/n“,MA(1+a+b);(分数:1.00)A.6B.8C.10D.123.以下程序的输出结果是( )。
2、 #finclude “stdlib.h“ fun(int*p,int a33) *p=a22; main() int a33=2,4,6,8,10,12,14,16,18,*p; p=(int*)mallocsizeof(int); fun(&p,a); printf(“%d/n“,*p); (分数:1.00)A.6B.16C.12D.184.以下程序运行后,输出结果是_。 #define PT 5.5 #define S(x) PT*x*x main() int a=1,b=2;printf(“%4.1 f/n“,S(a+b); (分数:1.00)A.49.5B.9.5C.22.0D.45
3、.05.以下叙述中正确的是_。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间6.以下程序运行后,输出结果是_。 fut(int*s,int p23) *s=p11; main() int a23=1,3,5,7,9,11, *p; p=(int*) malloc (sizeof(int); fut(&p,a); printf(“% d/n“,*p); (分数:1.00)A.1B.7C.9D.117.有如下程序 #define N 2 #define M N+1 #define NUM 2*M
4、+1 main() int i; for(i=1;i=NUM;i+) printf(“%d/n“i) 该程序中的 for 循环执行的次数是_。(分数:1.00)A.5B.6C.7D.8二、B填空题/B(总题数:3,分数:6.00)8.以上程序的输出结果是_。 #define MIN(x,y) (x)(y)?(x):(y) main() int a=5,b=2,c=3,d=3,t: t=MIN(a+b,c+d)*10;printf(“%d/n“ t);(分数:2.00)填空项 1:_9.以下程序的输出结果是_。 #define sqr(x) x*x main() int a=16,k=2,m=1
5、; a/=sqr(k+m)/sqr(k+m);printf(“%d/n“,a); (分数:2.00)填空项 1:_10.设有以下宏定义 #define W 5 #define L (W+2) 则执行赋值语句 p=L*2;(p 为 int 型变量)后,p 的值为_。(分数:2.00)填空项 1:_编译预处理和动态存储分配(一)答案解析(总分:13.00,做题时间:90 分钟)一、B选择题/B(总题数:7,分数:7.00)1.动态分配一整型数据长度的空间,使指针 p 指向该存储空间,则下列空缺处应填入的正确语句是( )。 int*p; p=_malloc (sizeof(int);(分数:1.00
6、)A.intB.int*C.(*inD.(int*) 解析:2.下列程序执行后的输出结果是_。 #define MA(x) x*(x-1) main()int a=1,b=2;printf(“%d/n“,MA(1+a+b);(分数:1.00)A.6B.8 C.10D.12解析:3.以下程序的输出结果是( )。 #finclude “stdlib.h“ fun(int*p,int a33) *p=a22; main() int a33=2,4,6,8,10,12,14,16,18,*p; p=(int*)mallocsizeof(int); fun(&p,a); printf(“%d/n“,*p
7、); (分数:1.00)A.6B.16C.12D.18 解析:4.以下程序运行后,输出结果是_。 #define PT 5.5 #define S(x) PT*x*x main() int a=1,b=2;printf(“%4.1 f/n“,S(a+b); (分数:1.00)A.49.5B.9.5 C.22.0D.45.0解析:5.以下叙述中正确的是_。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间 解析:6.以下程序运行后,输出结果是_。 fut(int*s,int p23) *s=p11
8、; main() int a23=1,3,5,7,9,11, *p; p=(int*) malloc (sizeof(int); fut(&p,a); printf(“% d/n“,*p); (分数:1.00)A.1B.7C.9 D.11解析:7.有如下程序 #define N 2 #define M N+1 #define NUM 2*M+1 main() int i; for(i=1;i=NUM;i+) printf(“%d/n“i) 该程序中的 for 循环执行的次数是_。(分数:1.00)A.5B.6 C.7D.8解析:二、B填空题/B(总题数:3,分数:6.00)8.以上程序的输出结
9、果是_。 #define MIN(x,y) (x)(y)?(x):(y) main() int a=5,b=2,c=3,d=3,t: t=MIN(a+b,c+d)*10;printf(“%d/n“ t);(分数:2.00)填空项 1:_ (正确答案:60)解析:9.以下程序的输出结果是_。 #define sqr(x) x*x main() int a=16,k=2,m=1; a/=sqr(k+m)/sqr(k+m);printf(“%d/n“,a); (分数:2.00)填空项 1:_ (正确答案:2)解析:10.设有以下宏定义 #define W 5 #define L (W+2) 则执行赋值语句 p=L*2;(p 为 int 型变量)后,p 的值为_。(分数:2.00)填空项 1:_ (正确答案:14)解析: