- 0
- 0
- 约6.36万字
- 约 45页
- 2026-01-22 发布于河北
- 举报
国家二级C语言机试(编译预处理和指
针)模拟试卷第1套
一、选择题(本题共41题,每题1.0分,共41分。)
1有以下程序#dfineT.5;#dfineS(xPT*x*xmi()nta=l,b=
eP3e);an{i2;
printf(,,%4.S(a+));}程序运行后的输出结果是
b
A、31.5
7.5
C、序有错无输出结果
程
D、14
标准答案:C
知识点解析:本题考查宏定义。预处理语句后面不能加分号,因此程序有错工如果
口号的话S(a+b)=PT*ab*a+b=35*1*12=7.5.
没力分+.+2+
、有以下程序#includcstdio.#define(x)*(x)*x+1yoidmain()intk=5,j=2:
2hS4{
pritf(,,%d\n,\S(k+));}程运行后的输出结果是
nj序
A、197
B、143
C、33
D、28
标准答案:B
知识点解析:这道题涉及到带参数的宏的定义和替换这个知识点。在程序中定义了
带参数的宏S(x),当在主函数中用参数k+j调用宏s时,根据宏替换的原则,则
S(k+)=S(5+2)=4*7*5+2+1=143。
j
3、有以下程序#includVsdio.h#defieSU(a(a)-a)mai){inta2,b=3,
etnB)(n(=
c=5,d;d=UB(a+b)*c:pintf「%dl\n,d);)程序运行后的输出结果是
Sr
A、-12
B、0
C、10
D、-20
标准答案:D
知识点解析:本题主要考查的是宏替换,在程序中执行d=uba+)+c这条语句
s(b
时,首先要进行宏替换,依据宏suB(a)的定义可知,上面这条语句替换为
d=(a+b).(a+b)+c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,
即d=5.5*5=20。
4、有下列程序:#includestdio_h#deftneN5#defineMN+l#definefix)(x*M)
main(){intil,i2:il=f(2);i2=f(l+l);printff%d%d\n,il,i2);}程序的运
行结果是
A、127
B、1212
C、1111
D、117
标准答案:D
知识点解析:在本题中,定义了3个宏定义语句,别是:#dcfincN5
#defineMN+5和#1©同©心)^*乂),所以根据C语言的宏替换规则,我们可知,
f(2)=2*N+l=2*5+l=l1,f(l+l)=l+l*N+l:1+1*5+1=7。
5、若程序中有宏定义行:#dcfincNIOO则以下叙述中正确的是
A、宏定义行中定义了标识符N的值为整数100
B、上述宏定义行实现将100赋给标示符N
C、在运行时用100替换标识符N
D、在编译程序对C源程序进行预处理时用100替换标识符N
标准答案:D
知识点解析:在C语言中,凡是以印、号开头的行,都称为编译预处理工其含义
是在c编译程序对c
原创力文档

文档评论(0)