您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页第八章 预处理命令

第八章 预处理命令

来源:保捱科技网
第八章 预处理命令

一、选择题

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)

B) C) D)

C语言的预处理功能是指完成宏替换和包含文件的调用 预处理命令只能位于C源程序文件的首部

凡是C源程序中行首以“#”标识的控制行都是预处理命令 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) 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}

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);

}a=14,b=15,c=0

8.以下程序的输出结果是 。(2级) main( )

{int a=20,b=10,c; c=a/b; # ifdef DEBUG

printf(“a=%d,b=%d,”,a,b); #endif

printf(“c=%d\\n,”,c); }

四、编程题

1.编写一个宏定义MYALPHA(c),用以判定c是否是字母字符,若是,得1;否则得0。(2级)

2.编写一个宏定义AREA(a,b,c),用于求一个边长为a、b和c的三角形的面积。其公式为:s=(a+b+c)/2 area= s(s-a)(s-b)(s-c) (1级) 3.编写一个程序求三个数中最大者,要求用带参宏实现。(1级)

4.编写一个程序求1+2+..+n之和,要求用带参宏实现。(1级)

5.编写一个宏定义LEAPYEAR(y),用以判定年份y是否是闰年。判定标准是:若y是4的倍数且不是100的倍数或者y是400的倍数,则y是闰年。(1级)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务