第53练 第10章 文件包含与条件编译《C语言程序设计》(电子工业出版社)一课一练
|
2份
|
7页
|
38人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第10章的第53练,内容涵盖第10章预处理命令的10.2~10.3 文件包含与条件编译。
《C语言程序设计》(电子工业出版社)一课一练 第53练
第10章 预处理命令
10.2~10.3 文件包含与条件编译
1、 单项选择题(本题共4小题)
1、关于 C 语言文件包含命令的两种格式#include "文件名"和#include <文件名>,下列描述正确的是( )
A. 两种格式的查找顺序完全相同
B. #include <文件名>会先在当前源文件目录查找,再去系统包含目录查找
C. #include "文件名"会先在当前源文件目录查找,未找到再去系统包含目录查找
D. 自定义头文件只能用#include <文件名>格式
【答案】C
【解析】双引号格式优先查找当前源文件目录,适合引用用户自定义的头文件;尖括号格式直接查找系统包含目录,适合引用标准库头文件,选项 C 正确,其他选项均不符合两种格式的查找规则。
2、下列关于文件包含命令的说法,错误的是( )
A. 一个#include命令只能包含一个被包含文件
B. 文件包含允许嵌套,即被包含的文件中可以再包含其他文件
C. 包含命令的功能是将指定文件插入命令行位置,与当前源程序合并
D. 多个被包含文件可以写在同一个#include命令中
【答案】D
【解析】一个#include命令只能指定一个被包含文件,若需包含多个文件,必须使用多个#include命令,选项 D 错误,其他选项均符合文件包含的规则。
3、条件编译的第一种形式#ifdef 标识符的核心功能是( )
A. 判断标识符是否被#define定义,是则编译程序段 1
B. 判断标识符是否未被#define定义,是则编译程序段 1
C. 判断条件表达式是否为真,是则编译程序段 1
D. 强制编译程序段 1,与标识符是否定义无关
【答案】A
【解析】#ifdef的功能是:如果标识符已被#define定义过,则编译#ifdef后的程序段 1,否则编译#else后的程序段 2(若有),选项 A准确描述了该功能。
4、下列用于防止头文件重复包含的预处理命令,写法正确的是( )
A.
#ifdef HEAD_H
#define HEAD_H
// 头文件内容
#endif
B.
#ifndef HEAD_H
#define HEAD_H
// 头文件内容
#endif
C.
#if HEAD_H
#define HEAD_H
// 头文件内容
#endif
D.
#define HEAD_H
#ifdef HEAD_H
// 头文件内容
#endif
【答案】B
【解析】使用#ifndef判断标识符是否未被定义,若未定义则定义该标识符并编译头文件内容,再次包含时标识符已定义,跳过编译,有效防止重复包含,选项 B 是标准写法。
2、 判断题(本题共3题)
1、#include <stdio.h>和#include "stdio.h"完全等价,没有任何区别。( )
【答案】×
【解析】两种格式的查找顺序不同:#include <stdio.h>直接在系统包含目录查找,#include "stdio.h"先在当前源文件目录查找,未找到再去系统目录查找,因此并非完全等价。
2、条件编译的第三种形式#if 条件,是根据条件表达式的真假值来决定编译对应的程序段。( )
【答案】√
【解析】#if后面的条件表达式值为真(非 0)时,编译程序段 1;值为假(0)时,编译程序段 2,能实现不同条件下的针对性编译,符合该形式的功能。
3、文件包含不允许嵌套,即被包含的文件中不能再使用#include命令包含其他文件。( )
【答案】×
【解析】文件包含允许嵌套,例如可以在自定义头文件a.h中包含stdio.h,再在主程序中包含a.h,这种嵌套是合法且常用的写法。
3、 填空题(本题共2题)
1、C 语言中,文件包含命令的两种格式分别是#include <文件名>和____。
【答案】#include "文件名"
【解析】双引号格式适合引用用户自定义的头文件,会优先在当前源文件目录查找;尖括号格式适合引用标准库头文件,直接查找系统包含目录。两种格式的查找顺序差异,能满足不同场景的文件引用需求。
2、条件编译中,与#ifdef功能相反的关键字是____,它用于判断标识符是否未被#define定义。
【答案】#ifndef
【解析】#ifndef的功能是:若标识符未被#define定义,则编译后续程序段;否则编译#else后的程序段。该关键字常用于编写头文件时防止重复包含的场景。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
#define STUDENT_NUM 3
int main() {
#ifdef STUDENT_NUM
printf("当前学生总数:%d
", STUDENT_NUM);
#else
printf("未定义学生总数
");
#endif
return 0;
}
【答案】
程序运行结果:
当前学生总数:3
【解析】
程序开头通过#define STUDENT_NUM 3定义了标识符STUDENT_NUM,条件编译命令#ifdef STUDENT_NUM判断该标识符已被定义,因此编译并执行第一个printf语句,输出定义的学生总数。若删除#define行,则会执行第二个printf语句。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第10章的第53练,内容涵盖第10章预处理命令的10.2~10.3 文件包含与条件编译。
《C语言程序设计》(电子工业出版社)一课一练 第53练
第10章 预处理命令
10.2~10.3 文件包含与条件编译
1、 单项选择题(本题共4小题)
1、关于 C 语言文件包含命令的两种格式#include "文件名"和#include <文件名>,下列描述正确的是( )
A. 两种格式的查找顺序完全相同
B. #include <文件名>会先在当前源文件目录查找,再去系统包含目录查找
C. #include "文件名"会先在当前源文件目录查找,未找到再去系统包含目录查找
D. 自定义头文件只能用#include <文件名>格式
2、下列关于文件包含命令的说法,错误的是( )
A. 一个#include命令只能包含一个被包含文件
B. 文件包含允许嵌套,即被包含的文件中可以再包含其他文件
C. 包含命令的功能是将指定文件插入命令行位置,与当前源程序合并
D. 多个被包含文件可以写在同一个#include命令中
3、条件编译的第一种形式#ifdef 标识符的核心功能是( )
A. 判断标识符是否被#define定义,是则编译程序段 1
B. 判断标识符是否未被#define定义,是则编译程序段 1
C. 判断条件表达式是否为真,是则编译程序段 1
D. 强制编译程序段 1,与标识符是否定义无关
4、下列用于防止头文件重复包含的预处理命令,写法正确的是( )
A.
#ifdef HEAD_H
#define HEAD_H
// 头文件内容
#endif
B.
#ifndef HEAD_H
#define HEAD_H
// 头文件内容
#endif
C.
#if HEAD_H
#define HEAD_H
// 头文件内容
#endif
D.
#define HEAD_H
#ifdef HEAD_H
// 头文件内容
#endif
2、 判断题(本题共3题)
1、#include <stdio.h>和#include "stdio.h"完全等价,没有任何区别。( )
2、条件编译的第三种形式#if 条件,是根据条件表达式的真假值来决定编译对应的程序段。( )
3、文件包含不允许嵌套,即被包含的文件中不能再使用#include命令包含其他文件。( )
3、 填空题(本题共2题)
1、C 语言中,文件包含命令的两种格式分别是#include <文件名>和____。
2、条件编译中,与#ifdef功能相反的关键字是____,它用于判断标识符是否未被#define定义。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
#define STUDENT_NUM 3
int main() {
#ifdef STUDENT_NUM
printf("当前学生总数:%d
", STUDENT_NUM);
#else
printf("未定义学生总数
");
#endif
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$