2011年计算机等级二级C语言章节习题及答案(8)
第9章 预处理命令
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)
9.1 有以下程序
#define F(X,Y)(X)*(Y)
main()
{ int a=3, b=4;
printf("%d\n", F(a++, b++));
}
程序运行后的输出结果是
A)12
B)15
C)16
D)20
正确答案: A
9.2 以下叙述中不正确的是
A)预处理命令行都必须以#号开始
B)在程序中凡是以#号开始的语句行都是预处理命令行
C)宏替换不占用运行时间,只占编译时间
D)在以下定义是正确的: #define PI 3.1415926;
正确答案: D
9.3 有如下程序:
#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循环执行的次数是
A)5
B)6
C)7
D)8
正确答案: B
9.4 以下程序的运行结果是
#define MIN(x,y)(x)<(y)?(x):(y)
main()
{ int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A)10
B)15
C)100
D)150
考生答案: 正确答案: B
9.5 有如下定义
#define D 2
int x=5;float y=3.83;
char c=′D′;
则下面选项中错误的是
A)x++;
B)y++;
C)c++;
D)D++;
正确答案: D
9.6 以下程序段的执行结果为
#define PLUS(X,Y)X+Y
main()
{ int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);
}
A)SUM=9 B)SUM=12 C)SUM=18 D)SUM=28
正确答案: B
9.7 下列程序的输出结果是
#include "stdio.h"
#defineM(x,y)x%y
main()
{ int a,m=12,n=100;
a=M(n,m);
printf("%d\n",a--);
}
A)2
B)3
C)4
D)5
正确答案: C
9.8 阅读下列程序段,则程序的输出结果为
#include "stdio.h"
#define M(X,Y)(X)*(Y)
#define N(X,Y)(X)/(Y)
main()
{ int a=5,b=6,c=8,k;
k=N(M(a,b),c);
printf("%d\n",k);
}
A)3
B)5
C)6
D)8
正确答案: A
9.9 已知#define M 2;的宏定义,执行语句k=M*5;后,k的值是
A)10
B)5
C)2
D)以上答案都不对
正确答案: D
9.10 以下关于宏替换叙述中,错误的是
A)宏替换占用编译时间
B)替换文本中可以包含已定义过的宏名
C)宏名可以由+号组成
D)宏替换只能是字符替换
正确答案: C
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)
9.11 设有如下宏定义
#define MYSWAP(z,x,y)
{ z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a,b内容交换,请填空。
float a=5,b=16,c;
MYSWAP(【1】,a,b);
正确答案: c
9.12 以下程序的输出结果为【2】。
#define JFT(x)x*x
main()
{ int a, k=3;
a=++JFT(k+1);
printf("%d",a);
}
正确答案: 9
9.13 以下程序的输出结果是【3】 。
#define MAX(x,y)(x)>(y)?(x):(y)
main()
{ int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
正确答案: 7
9.14 下面程序的运行结果是【4】。
#define N 10
#define s(x)x*x
#define f(x)(x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf("%d %d\n",i1,i2);
}
正确答案: 1000 10
9.15 以下程序的输出结果是【5】。
#define PR(ar)printf("%d,",ar)
main()
{ int j, a[]={1, 3, 5, 7, 9, 11, 15}, *p=a+5;
for(j=3; j; j--)
switch(j)
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p));
}
printf("\n");
}
正确答案: 9,9,11,
编辑特别推荐:
C语言学习要领
名师谈C语言的重要性和如何学习C语言
C语言入门必备手册
c语言初学者环境选择
新手(必看)怎样学习C语言