第八章 预处理命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章预处理命令
一、选择题
1.C语言中,宏定义有效范围从定义处开始,到源文件结束处结束,但可以用
来提前解除宏定义的作用。(0级)
A)# ifdef B)endif C)# undefine D)# undef
2.以下不正确的叙述是。(0级)
A)预处理命令都必须以“#”号开始
B)在程序中凡是以“#”号开始的语句行都是预处理命令行
C)C语言在执行过程中对预处理命令行进行处理
D)# define ABCD是正确的宏定义
3.以下正确的叙述是。(0级)
A)在程序的一行中可以出现多个有效的预处理命令行
B)使用带参宏时,参数的类型应与宏定义时的一致
C)宏替换不占用运行时间,只占编译时间
D)宏定义不能出现在函数内部
4.以下不正确的叙述是。(0级)
A)宏替换不占用运行时间
B)宏名无类型
C)宏替换只是字符替换
D)宏名必须用大写字母表示
5. 以下正确的叙述是。(0级)
A)C语言的预处理功能是指完成宏替换和包含文件的调用
B)预处理命令只能位于C源程序文件的首部
C)凡是C源程序中行首以“#”标识的控制行都是预处理命令
D)C语言的编译预处理就是对源程序进行初步的语法检查
6.在文件包含预处理语句(# include)的使用形式中,当之后的文件名用“”(双引号)
括起时,寻找被包含文件的方式是。(0级)
A)直接按系统设定的标准方式搜索目录
B)先在源程序所在目录搜索,再按系统设定的标准方式搜索
C)仅仅搜索源程序所在目录
D)仅仅搜索当前目录
7.在文件包含预处理语句(# include)的使用形式中,当之后的文件名用<>(尖引号)
括起时,寻找被包含文件的方式是。(0级)
A)直接按系统设定的标准方式搜索目录
B)先在源程序所在目录搜索,再按系统设定的标准方式搜索
C)仅仅搜索源程序所在目录
D)仅仅搜索当前目录
8.C语言的编译系统对宏命令的处理。(0级)
A)在程序运行时进行的
B)在程序连接时进行的
C)和C程序中的其它语句同时进行编译的
D)在对源程序中其它语句正式编译之前进行的
9.以下程序的输出结果是。(1级)
# define MIN(x,y) (x)<(y) ? (x) : (y)
main( )
{ int i,j,k; i=10; j=15; k=10*MIN(i,j); printf(“%d”,k); }
A)15 B)100 C)10 D)150
10.以下程序的输出结果是。(2级)
# include
# define ADD(y) 3.54+y
# define PR(a) printf(“%d”, (int)(a))
# define PR1(a) PR(a); putchar (…\n‟)
main( )
{ int i=4; PR1(ADD(5)*i); }
A)20 B)23 C)10 D)0
11.以下程序的输出结果是。(2级)
# include
# define N 2
# define M N+2
# define CUBE(x) (x*x*x)
main( )
{ int i=M; i=CUBE(i); printf(“%d\n”, i); }
A)17 B)64 C)125 D)53
二、填空题
1.C提供的预处理功能主要有三种,分别是、和。(0级)
2.设有以下宏定义:# define WIDTH 80
# define LENGTH WIDTH+40
则执行赋值语句:v= LENGTH*20;(v为int型变量)后,v的值是。(2级)
3.设有以下宏定义:# define WIDTH 80
# define LENGTH (WIDTH+40)
则执行赋值语句:k= LENGTH*20;(k为int型变量)后,k的值是。(2级)
三、读程序写结果题
1.以下程序的输出结果是。(2级)
# define PR(int) printf (”int=%d\n”, int)
main( )
{ int x=1,y=1,z=1; x+=y+=z; PR(x PR(x PR(z+=x } 2.以下程序的输出结果是。(2级) # include # define PR(a) printf (”a=%d”, (int)(a)) # define PRINT(a) PR(a); putchar(…\n‟); main( ) { float x=3.1415,y=1.823; PRINT(2*x); PRINT(3*y*y); } 3.以下程序的输出结果是。(2级) # include # define PR(a) printf (”a=%d”, (int)(a)) # define PRINT(a) PR(a); putchar(…\n‟); # define PRINT2(a,b) PR(a), PRINT(b) # define PRINT3(a,b,c) PR(a), PRINT2(b,c) main( ) { float x=3.1415,y=1.823,z=0.923; PRINT3(x,2*y,3*z) } 4.以下程序的输出结果是。(1级) # define A 3 # define B(a) ((A+1)*a) main( ) { int x; x=3*(A+B(7)); printf (”x=%4d\n”, x); } 5.以下程序的输出结果是。(1级) # define POWER(x) ((x)*(x)) main( ) { int i=1; while(i<=4) printf(“%d”, POWER(i++)); } 6.以下程序的输出结果是。(1级) main( ) {int b=5; #define b 2 #define f(x) b*(x) int y=3; printf(“%d,”, f(y+1)); #undef b printf(“%d,”, f(y+1)); #define b 3 printf(“%d\n”, f(y+1)); } 7.以下程序的输出结果是。(2级) #define DEBUG main( ) {int a=14,b=15,c; c=a/b; # ifdef DEBUG printf(“a=%d,b=%d,”,a,b); #endif printf(“c=%d\n,”,c);