第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