一、练习题
1.选择题
(1)C语言的预处理功能是()。
A.在程序运行时进行
B.在程序连接时进行
C.和C语言程序中的其他语句同时进行的
D.在对源程序中其他语句正式编译之前进行
(2)以下叙述中正确的是()。
A.预处理命令行必须位于源文件的开头
B.在源文件的一行上可以有多条预处理命令
C.宏名必须用大写字母表示
D.宏替换不占用程序的运行时间
(3)下面宏定义正确的是()。
A.define S=a*b
B.define PI 3.14;
C.define max(a,b)((a)>(b)?(a):(b))
D.define s(x)(x)*(x);
(4)有以下程序:
程序运行后的输出结果是()。
A.12 B.15 C.16 D.20
(5)在文件包含预处理语句中,当被包含文件名用“< >”括起时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索
C.仅在源程序所在目录搜索
D.仅搜索当前目录
2.填空题
(1)以下程序的输出结果是()。
(2)以下程序的输出结果是()。
(3)以下程序的输出结果是()。
(4)将宏定义EVEN(x, y)补全#define EVEN(x, y)_________该宏在x为偶数并且大于y时,得到1值。例如以下程序:
其输出结果为:z=1
(5)补全如下宏定义。#define PR_EXP(x,y)_________该宏用于打印两个表达式及其值,例如以下程序:
其输出结果为:3+4 is 7 and 4*12 is 48
二、测试题
1.选择题
(1)以下关于宏定义不正确的是()。
A.使用宏定义可以嵌套(www.xing528.com)
B.宏定义仅仅是符号替换
C.双符号中出现的宏名称不被替换
D.宏名必须用大写字母表示
(2)以下叙述中正确的是()。
A.使用带参数的宏定义时,参数的类型应与宏定义时的一致
B.在源文件的一行上可以有多条预处理命令
C.宏名称是在程序运行时处理的
D.使用带参数的宏和函数是完全一样的
(3)设有宏定义:
如果变量m已正确定义并赋值,则宏调用:IsDIV(m, 5)&&IsDIV(m, 7)所要表达的是()。
A.判断m是否能被5或7整除
B.判断m是否能被5和7整除
C.判断m被5或7整除是否余1
D.判断m被5和7整除是否都余1
(4)在文件包含预处理语句中,当被包含文件名用“”包含时,寻找包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索
C.仅在源程序所在目录搜索
D.仅搜索当前目录
(5)C语言中,宏定义的有效范围从定义处开始,到源文件结束处结束,但可以用()来提前解除宏定义的作用。
A.#ifdef B.#endif C.#undefined D.#undef
2.填空题
(1)以下程序的输出结果是()。
(2)若有宏定义如下:
则执行以下printf语句后,输出结果是()。
(3)若有宏定义如下:
则执行以下printf语句后,输出结果是()。
(4)若有宏定义如下:
则执行以下printf语句后,输出结果是()。
(5)用预处理指令#define声明一个常数,用以表明1天中有多少秒,请填空。
(6)若有宏定义如下:
则执行以下printf语句后,输出结果是()。
3.编程题
(1)输入两个整数,求它们相除的余数,用带参数的宏来实现。
(2)给年份year,定义一个宏,以判别该年份是否闰年。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。