第1章 第7节:宏定义和文件包含(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂

2025-10-26
| 2份
| 9页
| 89人阅读
| 2人下载

内容正文:

1.7节:宏定义和文件包含 一、单项选择题 1.以下关于宏展开的描述,正确的是( ) A. 宏展开是在编译阶段进行的 B. 宏展开是在运行阶段进行的 C. 宏展开会检查语法错误 D. 宏展开会分配内存 2.以下关于宏定义和函数的区别,错误的是() A. 宏是文本替换,函数是代码调用 B. 宏无类型检查,函数有类型检查 C. 宏在预处理阶段处理,函数在编译阶段处理 D. 宏调用会产生函数调用开销 3.以下关于文件包含的描述,正确的是() A. #include可以包含任意类型的文件 B. 一个#include指令可以包含多个文件 C. 文件包含可以嵌套(即头文件中包含其他头文件) D. #include会在运行时加载文件 4.若有宏定义#define SQR(x) x*x,int a=2, b=3;,则SQR(a+b)的值为() A. 25 B. 13 C. 11 D. 语法错误 5.若有宏定义#define M 10,#define N M+5,则N*2的宏展开结果是() A. 10+5*2 B. (10+5)*2 C. 30 D. 语法错误 6.带参数宏#define F(a) a+=2,若int x=3; F(x);,则x的值为() A. 3 B. 5 C. 语法错误 D. 不确定 7.以下宏定义中,能正确计算两个数平均值的是() A. #define AVG(a,b) a+b/2.0 B. #define AVG(a,b) (a+b)/2.0 C. #define AVG(a,b) a+(b)/2.0 D. #define AVG(a,b) (a)+(b)/2.0 8.若有宏定义#define SWAP(a,b) {int t=a; a=b; b=t;},int x=1, y=2; SWAP(x,y);,则x和y的值分别为() A. 1,2 B. 2,1 C. 语法错误 D. 不确定 9.以下关于宏定义的说明,错误的是() A. 宏名一般用大写字母,以区分变量 B. 宏定义可以嵌套(即宏中使用其他宏) C. 宏定义后必须加分号 D. 宏定义的作用域是从定义到文件结束 10.若有宏定义#define N 3,#define M N*N,则M的值为() A. 9 B. 6 C. 3*3 D. 语法错误 11.带参数宏#define MULT(a,b) a*b,int m=2, n=3, p=4;,则MULT(m+n,p)的结果是() A. 20 B. 24 C. 2+3*4 D. 语法错误 12.带参数宏#define CUBE(x) x*x*x,则CUBE(2+3)的结果是() A. 125 B. 65 C. 2+3*2+3*2+3 D. 语法错误 13.以下关于宏展开的说法,正确的是() A. 宏展开会递归替换(即宏中包含自身) B. 宏展开时会计算表达式的值 C. 宏展开仅替换一次 D. 宏展开会检查变量类型 14.若有宏定义#define SUM(a,b) a+b,int x=1, y=2, z=3;,则SUM(x,y)*z的结果是() A. 9 B. 8 C. 1+2*3 D. 语法错误 15.若有宏定义#define STR "Hello",则printf(STR);会输出() A. Hello B. STR C. "Hello" D. 语法错误 二、填空题 1.不带参数宏定义的一般形式是#define ________ __________。 2.若有宏定义#define PI 3.14,则2*PI的宏展开结果是________。 3.带参数宏定义的一般形式是#define ____(____) ____。 4.若有宏定义#define S(a,b) (a)*(b),则S(2+3,4)的宏展开结果是____。 5.文件包含的两种格式分别是#include<____>和#include"____"。 6. 若有宏定义#define ADD(a,b) a+b,则ADD(2,3)*4的宏展开结果是____。 7. 宏展开是在____阶段进行的。 8. 若有宏定义#define SQR(x) x*x,则SQR(3+2)的宏展开结果是____。 9. 若有宏定义#define INC(x) x+=1,int a=4; INC(a);,则a的值为____。 10. 宏定义的作用域是从____到____。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 1.7节:宏定义和文件包含 一、单项选择题 1.以下关于宏展开的描述,正确的是( ) A. 宏展开是在编译阶段进行的 B. 宏展开是在运行阶段进行的 C. 宏展开会检查语法错误 D. 宏展开会分配内存 【答案】A 宏展开属于预处理阶段(编译前),仅做文本替换,不检查语法、不分配内存。 2.以下关于宏定义和函数的区别,错误的是( ) A. 宏是文本替换,函数是代码调用 B. 宏无类型检查,函数有类型检查 C. 宏在预处理阶段处理,函数在编译阶段处理 D. 宏调用会产生函数调用开销 【答案】D 函数调用有栈帧开销,宏是文本替换,无调用开销。 3.以下关于文件包含的描述,正确的是( ) A. #include可以包含任意类型的文件 B. 一个#include指令可以包含多个文件 C. 文件包含可以嵌套(即头文件中包含其他头文件) D. #include会在运行时加载文件 【答案】C 文件包含可嵌套,#include仅能包含一个文件,且在预处理阶段处理,通常包含头文件(.h)。 4.若有宏定义#define SQR(x) x*x,int a=2, b=3;,则SQR(a+b)的值为( ) A. 25 B. 13 C. 11 D. 语法错误 【答案】C 5.若有宏定义#define M 10,#define N M+5,则N*2的宏展开结果是( ) A. 10+5*2 B. (10+5)*2 C. 30 D. 语法错误 【答案】A 宏替换为M+5*2即10+5*2=20 6.带参数宏#define F(a) a+=2,若int x=3; F(x);,则x的值为( ) A. 3 B. 5 C. 语法错误 D. 不确定 【答案】B 宏展开为x+=2,即x=3+2=5。 7.以下宏定义中,能正确计算两个数平均值的是( ) A. #define AVG(a,b) a+b/2.0 B. #define AVG(a,b) (a+b)/2.0 C. #define AVG(a,b) a+(b)/2.0 D. #define AVG(a,b) (a)+(b)/2.0 【答案】B 8.若有宏定义#define SWAP(a,b) {int t=a; a=b; b=t;},int x=1, y=2; SWAP(x,y);,则x和y的值分别为( ) A. 1,2 B. 2,1 C. 语法错误 D. 不确定 【答案】B 9.以下关于宏定义的说明,错误的是( ) A. 宏名一般用大写字母,以区分变量 B. 宏定义可以嵌套(即宏中使用其他宏) C. 宏定义后必须加分号 D. 宏定义的作用域是从定义到文件结束 【答案】C 10.若有宏定义#define N 3,#define M N*N,则M的值为( ) A. 9 B. 6 C. 3*3 D. 语法错误 【答案】A 11.带参数宏#define MULT(a,b) a*b,int m=2, n=3, p=4;,则MULT(m+n,p)的结果是( ) A. 20 B. 24 C. 2+3*4 D. 语法错误 【答案】C 12.带参数宏#define CUBE(x) x*x*x,则CUBE(2+3)的结果是( ) A. 125 B. 65 C. 2+3*2+3*2+3 D. 语法错误 【答案】A 13.以下关于宏展开的说法,正确的是( ) A. 宏展开会递归替换(即宏中包含自身) B. 宏展开时会计算表达式的值 C. 宏展开仅替换一次 D. 宏展开会检查变量类型 【答案】C 14.若有宏定义#define SUM(a,b) a+b,int x=1, y=2, z=3;,则SUM(x,y)*z的结果是( ) A. 9 B. 8 C. 1+2*3 D. 语法错误 【答案】C 15.若有宏定义#define STR "Hello",则printf(STR);会输出( ) A. Hello B. STR C. "Hello" D. 语法错误 【答案】A 二、填空题 1.不带参数宏定义的一般形式是#define ________ __________。 【答案】宏名 字符串 2.若有宏定义#define PI 3.14,则2*PI的宏展开结果是________。 【答案】2*3.14 3.带参数宏定义的一般形式是#define ____(____) ____。 【答案】宏名 形式参数表 字符串 4.若有宏定义#define S(a,b) (a)*(b),则S(2+3,4)的宏展开结果是____。 【答案】(2+3)*(4) 5.文件包含的两种格式分别是#include<____>和#include"____"。 【答案】文件名 文件名 6. 若有宏定义#define ADD(a,b) a+b,则ADD(2,3)*4的宏展开结果是____。 【答案】2+3*4 7. 宏展开是在____阶段进行的。 【答案】预处理 8. 若有宏定义#define SQR(x) x*x,则SQR(3+2)的宏展开结果是____。 【答案】3+2*3+2 9. 若有宏定义#define INC(x) x+=1,int a=4; INC(a);,则a的值为____。 【答案】5 10. 宏定义的作用域是从____到____。 【答案】定义处 文件结束 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第1章 第7节:宏定义和文件包含(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂
1
第1章 第7节:宏定义和文件包含(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。