课程
1113 字
约 4 分钟
大三下
学堂在线测试 —— 编译原理
编译原理exercises/xuetangx_2026·更新于 2026-09-15
学堂在线测试 —— 编译原理
优化 习题
一、 单项选择题(本题共 5 小题,每小题 1 分,共 5 分)
1. 以下不是优化所需要遵循的原则的是 ( D )。
- A. 等价原则
- B. 有效原则
- C. 合算原则
- D. 必要原则
【解析】 优化需要遵循的三个原则是:等价原则(优化后的代码与优化前的代码在功能上等价)、有效原则(优化后的代码确实能提高效率)、合算原则(优化带来的收益要大于优化本身的开销)。“必要原则”不在其中,故选 D。
2. 基本块内的优化为 ( B )
- A. 代码外提,删除归纳变量
- B. 删除多余运算,删除无用赋值
- C. 强度削弱,代码外提
- D. 循环展开,循环合并
【解析】 基本块内的优化属于局部优化,主要包括:删除多余运算(公共子表达式消除)、删除无用赋值、常量合并、常量传播等。A、C 中的代码外提、删除归纳变量、强度削弱属于循环优化;D 中的循环展开、循环合并也属于循环优化。故选 B。
3. 下面的变换方法中不是循环优化的是 ( D )
- A. 强度削弱
- B. 代码外提
- C. 删除归纳变量
- D. 删除无用代码
【解析】 循环优化的三种主要方法是:代码外提(将循环不变计算移到循环之前)、强度削弱(用较快的运算代替较慢的运算,如将乘法替换为加法)、删除归纳变量(删除循环中多余的归纳变量)。“删除无用代码”属于局部优化或全局优化,不属于循环优化。故选 D。
4. 代码优化中,“删除公共子表达式” 属于 ( A )
- A. 局部优化
- B. 循环优化
- C. 全局优化
- D. 目标代码优化
【解析】 “删除公共子表达式”(即公共子表达式消除)是在基本块内进行的优化,属于局部优化的范畴。通过识别基本块内重复计算的表达式,用已计算的结果替代,从而减少冗余计算。故选 A。
5. 程序运行时,存储局部变量的区域是 ( C )
- A. 代码区
- B. 静态数据区
- C. 栈区
- D. 堆区
【解析】 程序运行时的内存分为代码区、静态数据区、栈区和堆区。代码区存放程序的机器指令;静态数据区存放全局变量和静态变量;栈区存放函数调用时的局部变量、参数和返回地址等;堆区用于动态内存分配(如
malloc、new)。局部变量存储在栈区,故选 C。













