《编译原理》期中及期末习题 联系客服

发布时间 : 星期一 文章《编译原理》期中及期末习题更新完毕开始阅读22792f0df12d2af90242e68e

第一章 高级语言与编译程序概述

典型例题: 单项选择题

1.1.1.将编译程序分成若干个“遍”是为了___。 a.提高程序的执行效率 b.使程序的结构更加清晰

c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 1.1.2.构造编译程序应掌握____。(陕西省2000年自考题) a.源程序 b.目标语言 c.编译方法 d.以上三项都是 1.1.3.变量应当_。

a.持有左值 b.持有右值

c.既持有左值又持有右值 d.既不持有左值也不持有右值 1.1.4.编译程序绝大多数时间花在____上。(陕西省1998年自考题) a.出错处理 b.词法分析 c.目标代码生成 d.管理表格

1.1.5.____不可能是目标代码。 ( 陕西省1997年自考题) a.汇编指令代码 b.可重定位指令代码 c.绝对指令代码 d.中间代码

1.1.6.数组A[1?20,1?10]的首地址偏移量为0,按列存储,每个元素占一个字节,存储器 按字节编址,则A[i,j]的偏移地址为____。 a.(i-1)X10+(j-1) b.(i-1)X20+(j-1) c. (i-1)+(j-1)X10 d.(i-1)+(j-1)X20 1.1.7.使用____可以定义一个程序的意义。 a.语义规则 b.词法规则 c.产生规则 d.左结合规则

1.1.8.表达式X:=5中,变量x____。 a.只有左值 b.只有右值

c.既有左值又有右值 d.没有左值也没有右值 1.1.9.词法分析器的输入是__。 a.单词符号 b.源程序 c.语法单位 d.目标程序

1.1.10.中间代码生成时所遵循的是_。 a.语法规则 b.词法规则 c.语义规则 d.等价变换规则 1.1.11.编译程序是对__。

a.汇编程序的翻译 b.高级语言程序的解释执行 c.机器语言的执行 d.高级语言的翻译

1.1.12.词法分析应遵循_。 (陕西省2000年自考题) a.语义规则 b.语法规则

c.构词规则 d.等价变换规则

多项选择题:

1.2.1 编译程序各阶段的工作都涉及到___。 (陕西省1999年自考题) a.语法分析 b.表格管理 c.出错处理 d.语义分析 e.词法分析

1.2.2下列各项中,____与数组元素的地址有关。 (陕西省1999年自考题) a.数组第一个元素的存储地址 b.数组的存储方式 c.数组的维数 d.内存的编址方式 e.编译程序

1.2.3 编译程序工作时,通常有__阶段。 (陕西省1998年自考题) a.词法分析 b.语法分析 c.中间代码生成 d.语义检查 e.目标代码生成

1.2.4 过程调用的参数传递方式有__。 a传名 b.传值 c.传参数 d.传地址 e.传结果

1.2.5 编译过程中所遵循的规则有____。 a.等价变换规则b.短语规则c.构词规则 d. 语义规则 e.语法规则

填空题:

1.3.1 解释程序和编译程序的区别在于_。

1.3.2 编译过程通常可分为5个阶段,分别是_、语法分析、_、代码优化和目 标代码生成。(陕西省1999年自考题)

1.3.3 编译程序工作过程中,第一阶段输入是_,最后阶段的输出为一程序。

(陕西省1997年自考题) 1.3.4 静态数组元素地址的计算公式由两部分确定,一部分是_,它在_时确定; 另一部分是_,它在_时确定。

1.3.5 把语法范畴翻译成中间代码所依据的是语言的_。(陕西省2000年自考题) 1.3.6 目标代码可以是_指令代码或_指令代码或绝对机器指令代码。

(陕西省2000年自考题) 1.3.7 编译程序是指能将____程序翻译成____程序的程序。

1.3.8 数组元素的地址由___和___组成,其中_中的a和c在翻译数组说明语句时填入到数组的_中。

1.3.9 过程调用时,参数传递的方式有______、______、_____。

1.3.10 词法分析所遵循的是语言的______,而中间代码生成所遵循的是语言的_____。 (陕西省1997年自考题) 1.3.11 数组元素的地址计算与数组的_____数及____方式有关,也与数组的类型及机器对存 储器的编址方式有关。 (陕西省2000年自考题)

判断题:

1.4.1.赋值号左边的变量只持有左值,不持有右值。 ( ) 1.4.2.二维数组a[3?15,5?20]按行存放,并且每个元素占用一个存储单元,则数组元素a[i ,j]的地址为base-85+i X 16+j (base是数组a存放的起始地址)。 ( )

1.4.3.变量的名字用标识符来表示,同时名字代表一定的存储单元,有属性、值、作用域等特性。 (陕西省1997年自考题) ( ) 1.4.4.指示器变量的右值只持有右值,没有左值。(陕西省2000年自考题) ( ) 1.4.5.般而言,中间代码是一种独立于具体硬件的记号系统。 ( )

综合题

1.5.1 计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?

1.5.2 何谓“标识符”,何谓“名字”,两者的区别是什么?

1.5.3 简述在过程调用中,形参和实参间常见的各种信息传递方式(即形实结合方式)的含义。

1.5.4 画出编译程序的总体结构图,简述各部分的主要功能。

1.5.5 对于下面的程序: PROCEDURE P(x,y,z); BEGIN{P} y:=y+l; Z:=Z+X END;{P} BEGIN { main} A:=2; B:=3;

P(A+B,A,A); Print A

END.{ main}

若参数传递的办法分别为(1)传名,(2)传地址,(3)传结果,(4)传值;试问,程序 执行时所输出的A值分别是什么?

1.5.6 对于下面的程序:

PROGRAM main; a:integer;

PROCEDURE test(x::integer); temp:integer; BEGIN {test}

x:=a+l; Temp:=a+2

x:=temp END;{ test} BEGIN a:=2; test(a); print(a)

END.

分别给出参数传递为传地址、传结果、传值和传名时a的输出结果。

1.5.7 三维数组a[2:5,-2:2,5:7]首址为100,每个数组元素占4个存储单元,求数组元素a[3,1,6] 的地址。

1.5.8 什么叫自展?什么叫交叉编译?

1.5.9 试分析编译程序是否分遍应考虑的因素及多遍扫描编译程序的优缺点。

1.5.10 请画出编译程序的总框。如果你是一个编译程序的总设计师,应当考虑哪些问题?

(国防科大2000年研究生试题)

1.5.11 对于下面说明语句所定义的数组A array A[-2:3,-5:5]

假定数组按行存放,存储器按字节编址,每四个字节为一机器字,令A的首地址为1000,问A[i+3,j+2]的首地址是什么?(写出步骤)(同济大学1998年研究生试题)

1.5.12 数组var a:array[1..5,-3..6] of integer;按列存放,其首址100,每个整数占4个字节,内存按字节编址,则数组元素a[4,3]的地址是什么? (上海交大1997年研究生试题)

1.5.13 对于下面的程序段

?

procedure P(x,y,z) begin

y:=y*2;;