第3练 1.7 宏定义和文件包含 《编程语言基础——C语言》 (第5版) 一课一练 (湖南省)

2026-06-25
| 2份
| 7页
| 1人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 作业-同步练
知识点 C语言概述
使用场景 同步教学
学年 2026-2027
地区(省份) 湖南省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 107 KB
发布时间 2026-06-25
更新时间 2026-06-25
作者 xkw_068401954
品牌系列 上好课·一课一练
审核时间 2026-06-25
下载链接 https://m.zxxk.com/soft/58487470.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第3练,内容是1.7 宏定义和文件包含。 《编程语言基础——C语言》(第5版)一课一练 第3练 1.7 宏定义和文件包含 一、单选题 1. 下列选项中,哪一条命令用于C语言的宏定义?( ) A. #macro PI 3.1415926 B. #define PI 3.1415926 C. define PI = 3.1415926 D. const int PI = 3.1415926 2. 设有宏定义 #define PI 3.1415926,程序中表达式 2*PI*r 经预编译后,宏展开的结果是什么?( ) A. 2*3.1415926*r B. 2*PI*r C. 2*PI*3.1415926 D. 6.2831852*r 3. 关于宏定义命令 #define,以下描述正确的是哪一个?( ) A. #define是一条C语言语句,行末需要加分号 B. #define命令在程序运行时才会被处理 C. #define是编译预处理命令,行末不加分号 D. #define命令可以出现在程序的任何位置,包括函数体内部 4. 若有宏定义 #define S(a,b) a*b,对于 S(3+2, 4+1),宏展开后的结果是什么?( ) A. 5*5 B. 3+2*4+1 C. (3+2)*(4+1) D. 15 5. 关于带参数宏定义的格式,以下描述正确的是哪一个?( ) A. 宏名后面可以有空格,再跟括号和参数表 B. 宏名与括号之间需要加空格作为分隔 C. 宏名与括号之间需要加逗号作为分隔 D. 宏名与括号之间不能加空格,否则变成不带参数的宏定义 6. 关于C语言中宏名的大小写,以下描述正确的是哪一个?( ) A. 宏名不区分大小写,PI和pi完全相同 B. 宏名区分大小写,PI和pi是不同的标识符 C. 宏名习惯用小写字母表示 D. 宏名中不能包含大写字母 7. C语言中文件包含命令 #include <stdio.h> 和 #include "myfile.h" 的搜索路径有什么区别?( ) A. 两种格式的搜索路径相同,都会先搜索当前目录 B. 尖括号<>格式先搜索当前目录,双引号""格式先搜索系统路径 C. 尖括号<>格式在系统指定路径下搜索,双引号""格式先搜索用户当前目录 D. 尖括号<>格式用于包含用户自定义文件,双引号""格式用于包含系统库文件 8. 假设有以下宏定义 #define M(a,b) a+b,则表达式 M(2,3)*M(4,5) 宏展开后的值是多少?( ) A. 19 B. 25 C. 35 D. 12 9. 在C语言程序中使用 #include "prt.h" 包含一个头文件,关于头文件的作用,以下描述正确的是哪一个?( ) A. 头文件在程序运行时动态加载 B. 头文件的作用是将程序拆分为多个可执行文件 C. 头文件的内容独立编译为一个目标文件后链接到主程序 D. 头文件在编译预处理阶段将其内容插入到当前源文件中 10. 关于宏定义与编译预处理,下面描述中错误的是哪一个?( ) A. #define命令在程序的编译预处理阶段被处理 B. 带参数宏定义的宏名与左括号之间需要直接相连 C. #define是C语言关键字 D. 文件包含命令#include也在编译预处理阶段处理 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第3练,内容是1.7 宏定义和文件包含。 《编程语言基础——C语言》(第5版)一课一练 第3练 1.7 宏定义和文件包含 一、单选题 1. 下列选项中,哪一条命令用于C语言的宏定义?( ) A. #macro PI 3.1415926 B. #define PI 3.1415926 C. define PI = 3.1415926 D. const int PI = 3.1415926 【答案】B 【解析】C语言宏定义使用 #define 命令,格式为 #define 标识符 字符串。A使用#macro是错误写法;C缺少#号;D使用const定义的是常量变量,不属于宏定义。 2. 设有宏定义 #define PI 3.1415926,程序中表达式 2*PI*r 经预编译后,宏展开的结果是什么?( ) A. 2*3.1415926*r B. 2*PI*r C. 2*PI*3.1415926 D. 6.2831852*r 【答案】A 【解析】不带参数的宏展开是将程序中的宏名替换为宏定义中的字符串内容。PI替换为3.1415926,其他字符原样保留,展开后为2*3.1415926*r。 3. 关于宏定义命令 #define,以下描述正确的是哪一个?( ) A. #define是一条C语言语句,行末需要加分号 B. #define命令在程序运行时才会被处理 C. #define是编译预处理命令,行末不加分号 D. #define命令可以出现在程序的任何位置,包括函数体内部 【答案】C 【解析】#define是编译预处理命令,不是C语句,行末不应加分号。如果加分号,分号也会被当作替换内容的一部分,导致语法错误。#define在编译之前由预处理程序处理。 4. 若有宏定义 #define S(a,b) a*b,对于 S(3+2, 4+1),宏展开后的结果是什么?( ) A. 5*5 B. 3+2*4+1 C. (3+2)*(4+1) D. 15 【答案】B 【解析】带参数的宏展开采用直接文本替换,形参a替换为实参3+2,形参b替换为实参4+1,结果为 3+2*4+1。由于乘法优先级高于加法,实际计算值为3+8+1=12,容易产生非预期结果。正确做法是在宏定义中加括号:#define S(a,b) (a)*(b)。 5. 关于带参数宏定义的格式,以下描述正确的是哪一个?( ) A. 宏名后面可以有空格,再跟括号和参数表 B. 宏名与括号之间需要加空格作为分隔 C. 宏名与括号之间需要加逗号作为分隔 D. 宏名与括号之间不能加空格,否则变成不带参数的宏定义 【答案】D 【解析】带参数宏定义中,宏名与左括号之间不能有空格。例如 #define AREA(x) PI*x*x 正确定义了带参数的宏;如果写成 #define AREA (x) PI*x*x,则AREA被定义为不带参数的宏,替换字符串为 "(x) PI*x*x"。 6. 关于C语言中宏名的大小写,以下描述正确的是哪一个?( ) A. 宏名不区分大小写,PI和pi完全相同 B. 宏名区分大小写,PI和pi是不同的标识符 C. 宏名习惯用小写字母表示 D. 宏名中不能包含大写字母 【答案】B 【解析】C语言严格区分大小写,宏名大小写不同即为不同的标识符。如果定义了#define PI 3.14,程序中写pi则编译报错"undefined"。习惯上宏名用大写字母(如PI、MAX),但语法上小写也可用,前后必须一致。 7. C语言中文件包含命令 #include <stdio.h> 和 #include "myfile.h" 的搜索路径有什么区别?( ) A. 两种格式的搜索路径相同,都会先搜索当前目录 B. 尖括号<>格式先搜索当前目录,双引号""格式先搜索系统路径 C. 尖括号<>格式在系统指定路径下搜索,双引号""格式先搜索用户当前目录 D. 尖括号<>格式用于包含用户自定义文件,双引号""格式用于包含系统库文件 【答案】C 【解析】#include <文件名>:编译器在系统指定的路径(如include目录)下搜索,一般用于包含系统库函数的头文件。 #include "文件名":编译器先在用户当前目录搜索,找不到时再按系统路径搜索,一般用于包含用户自定义头文件。D选项恰好说反了。 8. 假设有以下宏定义 #define M(a,b) a+b,则表达式 M(2,3)*M(4,5) 宏展开后的值是多少?( ) A. 19 B. 25 C. 35 D. 12 【答案】A 【解析】宏展开采用直接文本替换:M(2,3)*M(4,5) → 2+3*4+5。根据运算符优先级,先算3*4=12,再算2+12+5=19。可见不加括号的宏定义容易因优先级问题产生非预期结果。 9. 在C语言程序中使用 #include "prt.h" 包含一个头文件,关于头文件的作用,以下描述正确的是哪一个?( ) A. 头文件在程序运行时动态加载 B. 头文件的作用是将程序拆分为多个可执行文件 C. 头文件的内容独立编译为一个目标文件后链接到主程序 D. 头文件在编译预处理阶段将其内容插入到当前源文件中 【答案】D 【解析】文件包含是在编译预处理阶段完成的,编译器将头文件中的全部内容原样插入到 #include 命令所在位置。头文件通常包含宏定义、函数声明、类型定义等,实现代码的模块化组织。 10. 关于宏定义与编译预处理,下面描述中错误的是哪一个?( ) A. #define命令在程序的编译预处理阶段被处理 B. 带参数宏定义的宏名与左括号之间需要直接相连 C. #define是C语言关键字 D. 文件包含命令#include也在编译预处理阶段处理 【答案】C 【解析】#define不是C语言关键字,而是编译预处理命令。C语言关键字包括int、char、if、while、return等共32个。预处理命令以#开头,由预处理器在编译之前完成,宏定义、文件包含等均属于预处理阶段的工作。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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