课程
学堂在线测试 —— 编译原理
学堂在线测试 —— 编译原理
引论 习题
一、 单项选择题(本题共 10 小题,每小题 1 分,共 10 分)
1. 编译是做 ______ 工作。( A )
- A. 高级语言的翻译
- B. 高级语言程序的解释执行
- C. 机器语言的执行
- D. 汇编语言的翻译
【解析】 编译是将高级语言程序翻译成等价的低级语言(汇编语言或机器语言)程序的过程。B 选项是解释程序的工作方式,C 选项是计算机直接执行机器语言,D 选项是汇编程序的工作。
2. 用高级语言编写的程序经编译后产生的程序叫 ______。( B )
- A. 解释程序
- B. 目标程序
- C. 源程序
- D. 连接程序
【解析】 高级语言程序经过编译后产生的是目标程序(目标代码)。源程序是编译前的输入,解释程序和连接程序都是处理工具,不是编译的产物。
3. 解释程序和编译程序的区别在于 ______。( D )
- A. 是否生成中间代码
- B. 加工的对象不同
- C. 使用的实现技术不同
- D. 是否生成目标代码
【解析】 编译程序和解释程序的核心区别在于:编译程序将源程序翻译为目标代码后再执行,而解释程序逐句分析并直接执行源程序,不生成目标代码。
4. 可以直接运行的目标代码是 ______。( C )
- A. 汇编指令代码
- B. 可重新定位指令代码
- C. 绝对指令代码
- D. 通用符号指令代码
【解析】 绝对指令代码(绝对地址机器代码)可以直接装入内存运行,不需要再经过汇编或链接等处理。汇编指令代码需要汇编器翻译,可重新定位指令代码需要链接装入器处理。
5. 关于编译和解释,以下说法正确的是 ______。( C )
- A. 编译是指把高级语言程序翻译成为中间代码的过程
- B. 任何编译程序都必须包含词法分析、语法分析等五个阶段
- C. 编译程序产生目标代码,而解释程序不产生目标代码
- D. 解释程序不对源语言进行翻译
【解析】 A 错误,编译是翻译成目标代码而非仅中间代码;B 错误,并非所有编译程序都必须包含五个阶段(如可以不包含优化阶段);C 正确,编译产生目标代码,解释不产生目标代码;D 错误,解释程序也需要对源语言进行翻译(逐句翻译并执行)。
6. 编译程序各阶段工作都涉及 ______。( B )
- A. 词法分析
- B. 表格管理
- C. 语法分析
- D. 语义分析
【解析】 表格管理(特别是符号表管理)贯穿编译的全过程,各个阶段都需要与之交互。词法分析、语法分析和语义分析只是编译过程中的特定阶段,并非贯穿始终。
7. 一遍扫描的编译程序的优点是 ______。( D )
- A. 算法清晰
- B. 便于分工
- C. 便于优化
- D. 编译速度快
【解析】 一遍扫描的编译程序只需要对源程序扫描一次,因此编译速度快是其最大优点。多遍扫描的优点才是算法清晰、便于分工和便于优化。
8. 构造编译程序应掌握 ______ 方面的知识。( D )
- A. 源程序
- B. 目标程序
- C. 编译方法
- D. 以上三个都是
【解析】 构造编译程序需要掌握三方面的知识:源语言(源程序)的知识、目标语言(目标程序)的知识以及编译方法(翻译技术)的知识,三者缺一不可。
9. 目标代码的高效性体现在 ______。( D )
- A. 运行时间较短
- B. 占用存储空间较小
- C. 运行时间短但占用内存空间大
- D. 运行时间短且占用存储空间小
【解析】 目标代码的高效性应同时体现在时间和空间两个维度上,即运行时间短且占用存储空间小。仅满足其中一个方面不能称为高效。
10. 将编译程序分成若干”遍”是为了 ______。( C )
- A. 提高程序的执行效率
- B. 利用有限的内存,提高机器的效率
- C. 使程序的结构更加清晰
- D. 利用有限的内存,降低机器的效率
【解析】 将编译程序分成若干”遍”的主要目的是使编译程序的结构更加清晰。划分成多个“遍”可以让每个阶段的功能更加单一、明确,便于设计、调试和维护,也容易根据机器的内存大小进行合理组织。
二、 判断题(本题共 1 小题,每小题 1 分,共 1 分)
1. 下面关于编译过程和编译程序结构之间的关系说法是否正确:词法分析、语法分析和中间代码生成属于编译前段,优化和目标代码生成属于编译后端。 ( × )
【解析】 该说法错误。编译前端应包括词法分析、语法分析、语义分析与中间代码生成,该说法遗漏了”语义分析”这一重要阶段。正确的划分是:前端(分析部分)包括词法分析、语法分析、语义分析与中间代码生成;后端(综合部分)包括代码优化和目标代码生成。
三、 填空题(本题共 8 小题,各小题分值见题干,共 16 分)
1. 编译过程中编译程序需要不断汇集和反复查证出现在源程序中各种名字的属性和特征等信息,这些信息通常记录在一张或几张 ______ 符号表 中。(1分)
2. 编译程序在逻辑上可划分为 ______、______、______、______、______。(5分)
【参考答案】 词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成
3. 编译程序可以分为 ______ 编译前端(分析部分) 和 ______ 编译后端(综合部分)。(2分)
4. 计算机执行高级语言有 ______ 编译 和解释两种方式,它们之间的主要区别是是否产生目标代码。(2分)
5. 编译各个阶段都和表格管理有关,其中最重要的一类表格是 ______ 符号表。(1分)
6. 编译前段是指和 ______ 源语言 有关和 ______ 目标机 无关的部分。(2分)
7. 目标代码的生成需要着重考虑两个问题,一是 ______ 如何充分利用计算机的寄存器,二是 ______ 如何选择指令(如何使目标代码较短)。(2分)
8. 编译程序各阶段的工作都要涉及到表格管理和 ______ 出错处理。(1分)













