【计算机类职业资格】中级软件设计师上午试题-程序语言-2及答案解析.doc

上传人:figureissue185 文档编号:1323074 上传时间:2019-10-17 格式:DOC 页数:15 大小:89.50KB
下载 相关 举报
【计算机类职业资格】中级软件设计师上午试题-程序语言-2及答案解析.doc_第1页
第1页 / 共15页
【计算机类职业资格】中级软件设计师上午试题-程序语言-2及答案解析.doc_第2页
第2页 / 共15页
【计算机类职业资格】中级软件设计师上午试题-程序语言-2及答案解析.doc_第3页
第3页 / 共15页
【计算机类职业资格】中级软件设计师上午试题-程序语言-2及答案解析.doc_第4页
第4页 / 共15页
【计算机类职业资格】中级软件设计师上午试题-程序语言-2及答案解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、中级软件设计师上午试题-程序语言-2 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:100.00)1.程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的_。(分数:2.00)A.地址B.类型C.名称D值2.在引用调用方式下进行函数调用是将_。(分数:1.00)A.实参的值传递给形参B.实参的地址传递给形参C.形参的值传递给实参D.形参的地址传递给实参3.在程序运行过程中经常使用参数在函数(过程)间传递信息,引用调用传递的是实参的_。(分数:1.00)A.地址B.类型C.名称D值4.弱类型语言(动态类型语言)是指不需要进行变量/对

2、象类型声明的语言。_属于弱类型语言。(分数:1.00)A.JavaB.C/C+C.PythonDC#5.可用于编写独立程序和快速脚本的语言是_。(分数:2.50)A.PythonB.PrologC.JavaDC#6.对于逻辑表达式“x and y or not z”,and、or、not 分别是逻辑与、或、非运算,优先级从高到低为 not、and、or,and、or 为左结合,not 为右结合,若进行短路计算,则_。(分数:2.50)A.x 为真时,整个表达式的值为真,不需要计算 y 和 z 的值B.x 为假时,整个表达式的值为假,不需要计算 y 和 z 的值C.x 为真时,根据 y 的值决定

3、是否需要计算 z 的值D.x 为假时,根据 y 的值决定是否需要计算 z 的值7.函数(过程)调用时,常采用传值与传地址两种方式在实参和形参间传递信息。以下叙述中,正确的是_。(分数:2.50)A.在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量B.在传值方式下,将实参的值传给形参,因此,实参必须是常量或变量C.在传地址方式下,将形参的值传给实参,因此,形参必须有地址D.在传地址方式下,将实参的值传给形参,因此,实参必须有地址8.若 C 程序的表达式中引用了未赋初值的变量,则_。(分数:2.50)A.编译时一定会报告错误信息,该程序不能允许B.可以通过编译并运行,但运行时一定会报告

4、异常C.可以通过编译,但链接时一定会报告错误而不能运行D.可以通过编译并运行,但运行结果不一定是期望的结果函数 t、f 定义如下所示,其中,a 是整型全局变量。假设调用函数 t 前 a 的值为 5,则在函数中以传值调用(call by value)方式调用函数 f 时,输出为_;在函数 t 中以引用调用(call by reference)方式调用函数时,输出为_。 (分数:5.00)A.12B.16C.20D.24A.12B.16C.20D.249.在 KMP 模式匹配算法中,需要求解模式串 p 的 next 函数值,其定义如下(其中,j 为模式串字符的序号)。对于模式串“abaabaca”

5、,其 next 函数值序列为_。 (分数:2.50)A.01111111B.01122341C.01234567D.0112233410.若一种程序设计语言规定其程序中的数据必须具有类型,则有利于_。 在翻译程序的过程中为数据合理分配存储单元 对参与表达式计算的数据对象进行检查 定义和应用动态数据结构 规定数据对象的取值范围及能够进行的运算 对数据进行强制类型转换(分数:2.50)A.B.C.D.11.以下关于高级程序设计语言翻译的叙述中,正确的是_。(分数:2.50)A.可以先进行语法分析,再进行词法分析B.在语法分析阶段可以发现程序中的所有错误C.语义分析阶段的工作与目标机器的体系结构密切

6、相关D.目标代码生成阶段的工作与目标机器的体系结构密切相关12.传值与传地址是函数调用时常采用的信息传递方式,_。(分数:2.50)A.在传值方式下,是将形参的值传给实参B.在传值方式下,形参可以是任意形式的表达式C.在传地址方式下,是将实参的地址传给形参D.在传地址方式下,实参可以是任意形式的表达式13.对高级语言源程序进行编译的过程可以分为多个阶段,分配寄存器的工作在_阶段进行。(分数:2.50)A.词法分析B.语法分析C.语义分析D.目标代码生成14.将高级语言源程序翻译成机器语言程序的过程,常引入中间代码。以下关于中间代码的叙述中,不正确的是_。(分数:2.50)A.中间代码不依赖于具

7、体的机器。B.使用中间代码可提高编译程序的可移植性C.中间代码可以用树或图表示D.中间代码可以用栈和队列表示15.在编译程序对高级语言源程序进行编译的过程中,要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入_中。(分数:2.50)A.符号表B.哈希表C.动态查找表D.栈和队列16.以下关于实现高级程序设计语言的编译和解释方式的叙述中,正确的是_。(分数:2.50)A.在编译方式下产生源程序的目标程序,在解释方式下不产生B.在解释方式下产生源程序的目标程序,在编译方式下不产生C.编译和解释方式都产生源程序的目标程序,差别是优化效率不同D.编译和解释方式都不产生源程序的目标

8、程序,差别在于是否优化17.以下关于解释程序和编译程序的叙述中,正确的是_。(分数:2.50)A.编译程序和解释程序都生成源程序的目标程序B.编译程序和解释程序都不生成源程序的目标程序C.编译程序生成源程序的目标程序,解释程序则不然D.编译程序不生成源程序的目标程序,而解释程序反之18.在对高级语言源程序进行编译的过程中,为源程序中变量所分配的存储单元的地址属于_。(分数:2.50)A.逻辑地址B.物理地址C.接口地址D.线性地址编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将需要的信息正确地填入合理组织的_中;对可执行语句,则是_。(分数:5.00)A.

9、符号表B栈C.队列D树A.翻译成机器代码并加以执行B.转换成语法树C.翻译成中间代码或目标代码D.转换成有限自动机19.将高级语言程序翻译为机器语言程序的过程中,常引入中间代码,其好处是_的适当工具。(分数:2.50)A.有利于进行反编译处理B.有利于进行与机器无关的优化处理C.尽早发现语法错误D.可以简化语法和语义分析20.以下关于程序错误的叙述中,正确的是_。(分数:2.50)A.编译正确的程序必然不包含语法错误B.编译正确的程序必然不包含语义错误C.除数为 0 的错误可以在语义分析阶段检查出来D.除数为 0 的错误可以在语法分析阶段检查出来21.在对程序语言进行翻译的过程中,常采用一些与

10、之等价的中间代码表示形式。常用的中间代码表示不包括_。(分数:2.50)A树B.后缀式C.四元式D.正则式22.编译和解释是实现高级程序设计语言翻译的两种的基本形式。以下关于编译与解释的叙述中,正确的是_。(分数:2.50)A.在解释方式下,对源程序不进行词法分析和语法分析,直接进行语义分析B.在解释方式下,无须进行词法、语法和语义分析,而是直接产生源程序的目标代码C.在编译方式下,必须进行词法、语法和语义分析,然后产生源程序的目标代码D.在编译方式下,必须先形成源程序的中间代码,然后再产生与机器对应的目标代码23.以下关于下图所示的有限自动机的叙述中,不正确的是_。 (分数:2.50)A.在

11、该自动机识别的字符串中 a 不能连续出现B.在自动机识别的字符串中 b 不能连续出现C.自动机识别的非空字符串必须以 a 结尾D.自动机识别的字符串可以为空串24.对于大多数通用程序设计语言,用_描述其语法即可。(分数:2.50)A.正规文法B.上下文无关文法C.上下文有关文法D.短语结构文法25.算术表达式“(a-b)*(c+d)”的后缀式是_。(分数:2.50)A.ab-cd+*B.abcd-*+C.ab-*cd+D.db-c+d*26.大多数程序设计语言的语法规则用_描述即可。(分数:2.50)A.正规文法B.上下文无关文法C.上下文有关文法D.短语结构文法27.在某 C/C+程序中,整

12、型变量 a 的值为 0 且应用在表达式“c=b/a”中,则最可能发生的情形是_。(分数:2.50)A.编译时报告有语法错误B.编译时报告有逻辑错误C.运行时报告有语法错误D.运行时产生异常28.以下关于语言 L=a n b n |n1的叙述中,正确的是_。 A.可用正规式“aa*bb*”描述,但不能通过有限自动机识别 B.可用正规式“a mbm”表示,也可用有限自动机识别 C.不能用正规式表示,但可以用有限自动机识别 D.不能用正规式表示,也不能通过有限自动机识别(分数:2.50)A.B.C.D.29.已知文法 G:SA0|B1,AS1|1,BS0|0,其中 S 是开始符号。从 S 出发可以推

13、导出_。(分数:2.50)A.所有由 0 构成的字符串B.所有由 1 构成的字符串C.某些 0 和 1 个数相等的字符串D.所有 0 和 1 个数不同的字符串30.算术表达式 a+(b-c)*d 的后缀式是_。(“-”、“+”、“*”表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)(分数:2.50)A.bc-d*a+B.abc-d*+C.ab+c-d*D.abcd-*+31.对高级语言源程序进行编译的过程中,有穷自动机(NFA 或 DFA)是进行_。(分数:2.50)A.词法分析B.语法分析C.语义分析D.出错处理32.语言 L=a m b n |m0,n1的正规表达式是_。(分数:

14、2.50)A.aa*bb*B.a*bb*C.aa*b*D.a*b*33.算术表达式(a-b)*c+d 的后缀式是_(“-”、“+”、“*”表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)。(分数:2.50)A.abcd-*+B.ab-cd*+C.ab-c*d+D.abc-d*+34.算术表达式 x-(y+c)*8 的后缀式是_(“-”、“+”、“*”表示算术的减、加、乘运算,运算符的优先级和结合型遵循惯例)。(分数:2.50)A.xyc8-+*B.xy-c+8*C.xyc 8*+-D.xyc+8*-35.如下图所示为一个有限自动机(其中,A 是初态,C 是终态),该自动机所识别的字符

15、串的特点是_。 (分数:2.50)A.必须以 11 结尾的 0、1 串B.必须以 00 结尾的 0、1 串C.必须以 01 结尾的 0、1 串D.必须以 10 结尾的 0、1 串36.如下图所示为一个有限自动机(其中,A 是初态、C 是终态),该自动机识别的语言可用正规式_表示。 (分数:2.50)A.(0|1)*01B.1*0*10*1C.1*(0)*01D.1*(0|10)*1*37.包含 8 个成员的开发小组的沟通路径最多有_。(分数:2.50)A.28B.32C.56D.6438.如下图所示为一个有限自动机(其中,A 是初态、C 是终态),该自动机可识别_。 (分数:2.50)A.00

16、00B.1111C.0101D.1010中级软件设计师上午试题-程序语言-2 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:100.00)1.程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的_。(分数:2.00)A.地址B.类型C.名称 D值解析:解析 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样,表示该引用名是目标变量名的一个别名。2.在引用调用方式下进行函数调用是将_。(分数:1.00)A.实参的值传递给形参B.实参的地址传递给形参 C.形参的值传递给实参D.形参的地址传递给实参解析:解析 引用调

17、用是把实参(如 int a)的地址(&a)赋给形参(指针变量,例如*b,这时 b=&a,即 b 指向变量 a),如果*b(即 a 对应的内存空间)发生变化,也就是变量 a 的值发生了变化。3.在程序运行过程中经常使用参数在函数(过程)间传递信息,引用调用传递的是实参的_。(分数:1.00)A.地址 B.类型C.名称D值解析:解析 引用调用把参数的地址复制给形式参数。在函数内,该地址用于访问调用中用到的实际参数。这意味着修改形式参数会影响实际参数。4.弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言。_属于弱类型语言。(分数:1.00)A.JavaB.C/C+C.Python D

18、C#解析:解析 根据定义可知 Java,C/C+,C#都需要进行变量/对象声明,所以说是强类型语言。而Pvthon 不需要,它属于弱类型语言。5.可用于编写独立程序和快速脚本的语言是_。(分数:2.50)A.Python B.PrologC.JavaDC#解析:解析 Python 是一种面向对象的解释型程序设计语言,可用于编写独立程序、快速脚本和复杂应用的原型。Python 也是一种脚本语言,它支持对操作系统底层的访问。 Prolog 是一种逻辑型语言。Prolog 程序是一系列事实、数据对象或事实间的具体关系和规则的集合。Prolog 有很强的推理功能,适用于书写自动定理证明、专家系统、自然

19、语言理解等问题的程序。 Java 是一种面向对象的程序设计语言,能开发应用在 Internet 上且具有软、硬件独立性和交互能力的程序。Java 可以一次编写而到处运行。 C#是微软公司发布的一种面向对象的、运行于 NET Framework 之上的高级程序设计语言。C#看起来与Java 有着惊人的相似:它包括了诸如单一继承、接口、与 Java 几乎同样的语法和编译成中间代码再运行的过程。但是 C#与 Java 有着明显的不同,它借鉴了 Delphi 的一个特点,与 COM(组件对象模型)是直接集成的,而且它是微软公司.NET Windows 网络框架的主角。6.对于逻辑表达式“x and y

20、 or not z”,and、or、not 分别是逻辑与、或、非运算,优先级从高到低为 not、and、or,and、or 为左结合,not 为右结合,若进行短路计算,则_。(分数:2.50)A.x 为真时,整个表达式的值为真,不需要计算 y 和 z 的值B.x 为假时,整个表达式的值为假,不需要计算 y 和 z 的值C.x 为真时,根据 y 的值决定是否需要计算 z 的值 D.x 为假时,根据 y 的值决定是否需要计算 z 的值解析:解析 “x and y or not z”可以表示为“(x and y)or(not z)”。x 为真时,如果 y 为真,则 x and y 的结果为真,此时不

21、需要计算 z 的值,整个表达式的值为真:如果 y 为假,则 x and y 的结果为假,此时整个表达式的值由 z 决定,如果 z 为真,则 not z 为假,最终结果为假,相反则为真。 x 为假时,不需要计算 y 的值,x and y 的结果为假,整个表达式的值由 z 决定。7.函数(过程)调用时,常采用传值与传地址两种方式在实参和形参间传递信息。以下叙述中,正确的是_。(分数:2.50)A.在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量B.在传值方式下,将实参的值传给形参,因此,实参必须是常量或变量C.在传地址方式下,将形参的值传给实参,因此,形参必须有地址D.在传地址方式下,

22、将实参的值传给形参,因此,实参必须有地址 解析:解析 传值调用是指传递变量值的调用方式。在这种调用方式中,实参使用变量名或者表达式,形参使用变量名。在调用时,调用函数将实参值拷贝到一个副本给形参,即使形参按顺序从对应的实参中获得值,这就相当于将实参值对应地赋给形参,使形参获值。传址调用是指在调用时传递变量地址值的传值调用。传址调用时要求调用函数的实参用地址值,而被调用函数的形参用指针,于是函数之间进行地址值的传递。这种传递是将实参的变量地址值传递给形参指针,即让形参指针指向实参变量,这种传递方式与调用函数拷贝实参值的副本给形参是不同的,它是让形参指针直接指向实参的变量。8.若 C 程序的表达式

23、中引用了未赋初值的变量,则_。(分数:2.50)A.编译时一定会报告错误信息,该程序不能允许B.可以通过编译并运行,但运行时一定会报告异常C.可以通过编译,但链接时一定会报告错误而不能运行 D.可以通过编译并运行,但运行结果不一定是期望的结果解析:解析 全局变量和静态局部变量在定义时如果没有初始化,编译时会自动初始化为 0;而普通的局部变量,如果没有初始化,则其值是一个随机数。在 C 程序表达式中,只要引用的变量定义了,就可以通过编译并运行,但运行结果不一定是期望的结果。函数 t、f 定义如下所示,其中,a 是整型全局变量。假设调用函数 t 前 a 的值为 5,则在函数中以传值调用(call

24、by value)方式调用函数 f 时,输出为_;在函数 t 中以引用调用(call by reference)方式调用函数时,输出为_。 (分数:5.00)A.12B.16 C.20D.24解析:A.12B.16C.20D.24 解析:解析 本题主要考查函数调用时参数的传递方式。如果采用传值方式调用,则形参值的变化不会影响实参;而采用引用方式调用,则形参值的变化直接反映到实参。 本题中如果在函数 t 中采用传值方式调用函数 f,a 的值传给形参 r,在函数 f 中,a 的值变为 6,r 的值为 10 并返回赋给变量 x,由于 a 是全局变量,退出函数 f 后 a 的值依然为 6,所以函数 t

25、 的输出结果为16。如果函数 t 采用传值方式调用函数 f,则形参 r 就是对实参 a 的引用,对 r 的修改就是对 a 的修改,在执行 a=r+1 时,a 和 r 的值都变为 6,执行 r=r*2,a 和 r 的值都变为 12,并将 r 的值返回给 x,因此函数 t 的输出结果为 24。9.在 KMP 模式匹配算法中,需要求解模式串 p 的 next 函数值,其定义如下(其中,j 为模式串字符的序号)。对于模式串“abaabaca”,其 next 函数值序列为_。 (分数:2.50)A.01111111B.01122341 C.01234567D.01122334解析:解析 模式串“abaa

26、baca”的 next 函数值序列如下。 10.若一种程序设计语言规定其程序中的数据必须具有类型,则有利于_。 在翻译程序的过程中为数据合理分配存储单元 对参与表达式计算的数据对象进行检查 定义和应用动态数据结构 规定数据对象的取值范围及能够进行的运算 对数据进行强制类型转换(分数:2.50)A.B. C.D.解析:解析 数据是程序操作的对象,类型说明数据占用的内存和存放形式。数据类型不仅可用于在基础机器中完成对值得布局,还可以用于检查表达式中对运算的应用是否正确。11.以下关于高级程序设计语言翻译的叙述中,正确的是_。(分数:2.50)A.可以先进行语法分析,再进行词法分析B.在语法分析阶段

27、可以发现程序中的所有错误C.语义分析阶段的工作与目标机器的体系结构密切相关D.目标代码生成阶段的工作与目标机器的体系结构密切相关 解析:解析 对于高级程序设计语言,编译程序会把编写的源程序翻译成与之等价的目标程序。编译程序的工作过程分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。语法分析要在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。可见,要先进行词法分析,然后进行语法分析,故选项 A 错误。在语法分析阶段能发现语法错误,但不能发现语义错误,因此选项 B 错误。语义分析阶段主要检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段

28、使用,可见,语义分析阶段的工作与目标机器的体系结构关联不大,选项 C 错误。目标代码生成阶段的任务是把中间代码变化成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。12.传值与传地址是函数调用时常采用的信息传递方式,_。(分数:2.50)A.在传值方式下,是将形参的值传给实参B.在传值方式下,形参可以是任意形式的表达式C.在传地址方式下,是将实参的地址传给形参 D.在传地址方式下,实参可以是任意形式的表达式解析:解析 在传值方式下,是将实参的值传给形参,形参不能向实际参数传递信息;实参可以是表达式或常量,也可以是变量或数组元素。 在传地址方式下,

29、是将实参的地址传给形参,实参和形参都指向同一个对象,被调用函数中对形式参数的修改实际上就是对实际参数的修改,可以实现数据的双向传递。实参必须是变量地址、数组名,不能是表达式或常量。 形参就是形式参数,用一个变量来代表,不能是表达式。13.对高级语言源程序进行编译的过程可以分为多个阶段,分配寄存器的工作在_阶段进行。(分数:2.50)A.词法分析B.语法分析C.语义分析D.目标代码生成 解析:解析 目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代

30、码的质量。14.将高级语言源程序翻译成机器语言程序的过程,常引入中间代码。以下关于中间代码的叙述中,不正确的是_。(分数:2.50)A.中间代码不依赖于具体的机器。B.使用中间代码可提高编译程序的可移植性C.中间代码可以用树或图表示D.中间代码可以用栈和队列表示 解析:解析 中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,使用中间代码可提高编译程序的可移植性,常见的有逆波兰记号、四元式、三元式和树。15.在编译程序对高级语言源程序进行编译的过程中,要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入_中。(分数:2.50

31、)A.符号表 B.哈希表C.动态查找表D.栈和队列解析:解析 在编译过程中编译程序不断汇集和反复查证出现在源程序中各种名字的属性和特征信息等有关信息。这些信息通常记录在一张或几张符号表中。符号表的每一项都包括两部分:一部分是名字(标识符);另一部分是名字属性(标识符的有关信息)。在编译过程中,每当扫描器(词法分析器)识别出一个名字后,编译程序就查阅符号表,查看其是否位于符号表中。符号表在编译过程中的地位和作用非常重要,是进行上下文合法性检查、语义处理及代码生成的依据。符号表总体结构的设计和实现与源语言的复杂性(包括词法结构、语法结构的复杂性)有关,还与对于编译系统在时间效率和空间效率方面的要求

32、有关。16.以下关于实现高级程序设计语言的编译和解释方式的叙述中,正确的是_。(分数:2.50)A.在编译方式下产生源程序的目标程序,在解释方式下不产生 B.在解释方式下产生源程序的目标程序,在编译方式下不产生C.编译和解释方式都产生源程序的目标程序,差别是优化效率不同D.编译和解释方式都不产生源程序的目标程序,差别在于是否优化解析:解析 在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需要将源程序翻译成独立的

33、目标程序。17.以下关于解释程序和编译程序的叙述中,正确的是_。(分数:2.50)A.编译程序和解释程序都生成源程序的目标程序B.编译程序和解释程序都不生成源程序的目标程序C.编译程序生成源程序的目标程序,解释程序则不然 D.编译程序不生成源程序的目标程序,而解释程序反之解析:解析 编译程序:也称编译器,将源程序翻译成目标语言程序,然后在计算机上运行目标程序。虽然执行效率高,但编写出来的程序可读性很差,且难以修改和维护。 解释程序:也称解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。18.在对高级语言源程序进行编译的过程中,为源程序中变量所分配的存储单元的地址属于

34、_。(分数:2.50)A.逻辑地址 B.物理地址C.接口地址D.线性地址解析:解析 在编译时产生的目标文件都是从地址 0 开始的,在连接时将各个目标文件进行符号替换,这时会修改相应的地址,最后产生一个从地址 0 开始的可执行文件。在该可执行文件中的地址称为逻辑地址。编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将需要的信息正确地填入合理组织的_中;对可执行语句,则是_。(分数:5.00)A.符号表 B栈C.队列D树解析:A.翻译成机器代码并加以执行B.转换成语法树C.翻译成中间代码或目标代码 D.转换成有限自动机解析:解析 编译程序的功能是把用高级语言书写

35、的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。编译程序的工作过程可以分为 6 个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,实际的编译器中可能会将其中的某些阶段结合在一起进行处理。各个阶段逻辑上可以划分为前端和后端两部分。前端包括从词法分析到中间代码生成各个阶段的工作,后端包括中间代码优化、目标代码生成与优化等阶段。这样,以中间代码为分水岭,把编译器分成了与机器有关的部分和与机器无关的部分。符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。19.将高级语言程

36、序翻译为机器语言程序的过程中,常引入中间代码,其好处是_的适当工具。(分数:2.50)A.有利于进行反编译处理B.有利于进行与机器无关的优化处理 C.尽早发现语法错误D.可以简化语法和语义分析解析:解析 本题考查程序语言基础知识。 “中间代码”是一种简单且含义明确的记号系统,与具体的机器无关,可以有若干种形式。可以将不同的高级程序语言翻译成同一种中间代码。由于与具体机器无关,使用中间代码有利于进行与机器无关的优化处理,以及提高编译程序的可移植性。20.以下关于程序错误的叙述中,正确的是_。(分数:2.50)A.编译正确的程序必然不包含语法错误B.编译正确的程序必然不包含语义错误C.除数为 0

37、的错误可以在语义分析阶段检查出来 D.除数为 0 的错误可以在语法分析阶段检查出来解析:解析 用户编写的源程序不可避免地会有一些错误,这些错误大致可以分为静态错误和动态错误。动态错误也称动态语义错误,它们发生在程序运行时,例如除数为 0、引用数组元素下标错误等。静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误,如单词拼写错误、标点符号错、表达式缺少操作数、括号不匹配等有关语言结构上的错误称为语法错误,而语义分析时发现的运算符与运算对象不合法等错误属于静态语义错误。21.在对程序语言进行翻译的过程中,常采用一些与之等价的中间代码表示形式。常用的中间代码表示不包括_。(分数:2.5

38、0)A树B.后缀式C.四元式D.正则式 解析:解析 常用的中间代码有后缀式、三元式、四元式和树等形式。22.编译和解释是实现高级程序设计语言翻译的两种的基本形式。以下关于编译与解释的叙述中,正确的是_。(分数:2.50)A.在解释方式下,对源程序不进行词法分析和语法分析,直接进行语义分析B.在解释方式下,无须进行词法、语法和语义分析,而是直接产生源程序的目标代码C.在编译方式下,必须进行词法、语法和语义分析,然后产生源程序的目标代码 D.在编译方式下,必须先形成源程序的中间代码,然后再产生与机器对应的目标代码解析:解析 编译程序是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序,编译的

39、工作阶段包括:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。解释程序直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如 BASIC解释程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。23.以下关于下图所示的有限自动机的叙述中,不正确的是_。 (分数:2.50)A.在该自动机识别的字符串中 a 不能连续出现 B.在自动机识别的字符串中 b 不能连续出现C.自动机识别的非空字符串必须以 a 结尾D.自动机识别的字符串可

40、以为空串解析:解析 图中 a 可代表两个步骤:状态 1-1,状态 2-1。如果两个 a 连续出现,则无法区分。24.对于大多数通用程序设计语言,用_描述其语法即可。(分数:2.50)A.正规文法B.上下文无关文法 C.上下文有关文法D.短语结构文法解析:解析 上下文无关文法:是形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为 2 型文法,由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。25.算术表达式“(a-b)*(c+d)”的后缀式是_。(分数:2.50)A.ab-cd+* B.abcd-*+C.ab-*cd+D.db-c+d*解析:解析 后缀

41、式是波兰逻辑学家卢卡西维奇发明的一种表达方式,把运算符号写在运算对象的后面,例如把 a+b 写成 ab+,这种表示法的优点是根据运算对象和运算符的出现次序进行计算,不需要使用括号。26.大多数程序设计语言的语法规则用_描述即可。(分数:2.50)A.正规文法B.上下文无关文法 C.上下文有关文法D.短语结构文法解析:解析 上下文无关文法是形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为 2 型文法。由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。上下文无关文法拥有足够强的表达力来表示大多数程序设计语言的语法。上下文无关文法足够简单,使得我们可以构

42、造有效的分析算法来检验一个给定字符串是否是由某个上下文无关文法产生的。27.在某 C/C+程序中,整型变量 a 的值为 0 且应用在表达式“c=b/a”中,则最可能发生的情形是_。(分数:2.50)A.编译时报告有语法错误B.编译时报告有逻辑错误C.运行时报告有语法错误D.运行时产生异常 解析:解析 编译时 a 的值无法确定,表达式“c=b/a”符合 C/C+语言的语法逻辑,编译时不会报错。运行时代入 a 的值时发生错误。28.以下关于语言 L=a n b n |n1的叙述中,正确的是_。 A.可用正规式“aa*bb*”描述,但不能通过有限自动机识别 B.可用正规式“a mbm”表示,也可用有

43、限自动机识别 C.不能用正规式表示,但可以用有限自动机识别 D.不能用正规式表示,也不能通过有限自动机识别(分数:2.50)A.B.C.D. 解析:解析 根据正规式和有限自动机的规范,结合题中给出的语言 L,很明显都无法将语言 L 表示和识别出来。29.已知文法 G:SA0|B1,AS1|1,BS0|0,其中 S 是开始符号。从 S 出发可以推导出_。(分数:2.50)A.所有由 0 构成的字符串B.所有由 1 构成的字符串C.某些 0 和 1 个数相等的字符串 D.所有 0 和 1 个数不同的字符串解析:解析 从开始符号出发,能推导出两种串:一种以 0 结尾,一种以 1 结尾。以 0 结尾的

44、前面必须是 1,而这个 1 前面可能还有一个递归的 S;以 1 结尾的前面必须是 0,而这个 0 前面可能还有一个递归的 S。由此可以知道,这是文法可以导出某些 0 和 1 的个数相同的串。之所以说是某些,而不是所有,是因为,该文法所导出的串中 0 附近必有 1,1 附近必有 0,比如:01,0101,0110 等等,但 000111 就不能导出。30.算术表达式 a+(b-c)*d 的后缀式是_。(“-”、“+”、“*”表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)(分数:2.50)A.bc-d*a+B.abc-d*+ C.ab+c-d*D.abcd-*+解析:解析 后缀表达式:

45、不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行。31.对高级语言源程序进行编译的过程中,有穷自动机(NFA 或 DFA)是进行_。(分数:2.50)A.词法分析 B.语法分析C.语义分析D.出错处理解析:解析 DFA 对于同一个输入只有一个确定的下一状态,所以词法分析器优先采用它。32.语言 L=a m b n |m0,n1的正规表达式是_。(分数:2.50)A.aa*bb*B.a*bb* C.aa*b*D.a*b*解析:解析 m0,a m 说明可以有 0 个 a 或者多个 a;n1,b“说明至少有 1 个 b 或者多个 b。a*表示由 0 个或者多个

46、 a 构成的集合,可以表示a m |m0;b*表示由 0 个或者多个 b 构成的集合,bb*才可以表示b n |n1。33.算术表达式(a-b)*c+d 的后缀式是_(“-”、“+”、“*”表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)。(分数:2.50)A.abcd-*+B.ab-cd*+C.ab-c*d+ D.abc-d*+解析:解析 后缀表达式的计算是通过栈来实现的。算术表达式(a-b)+c+d 首先计算 a-b,因此 a、b 先入栈,当遇到“-”时出栈,得出结果并压入栈;然后计算与 c 相乘的结果,将 c 入栈,遇到“*”时,出栈,计算乘积并将结果入栈;最后进行与 d 的加

47、法运算,将 d 入栈,遇到“+”时出栈,计算结果。34.算术表达式 x-(y+c)*8 的后缀式是_(“-”、“+”、“*”表示算术的减、加、乘运算,运算符的优先级和结合型遵循惯例)。(分数:2.50)A.xyc8-+*B.xy-c+8*C.xyc 8*+-D.xyc+8*- 解析:解析 后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则),如(2+1)*3 的后缀式为 21+3 *。运用后缀表达式进行计算的具体做法:建立一个栈 S,从左到右读后缀表达式,如果读到操作数就将它压入栈 S 中,如果读到 n 元运算符(即需要

48、参数个数为 n 的运算符),则取出由栈项向下的 n 项,按操作符运算,再将运算的结果代替原栈顶的 n 项,压入栈 S 中。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。35.如下图所示为一个有限自动机(其中,A 是初态,C 是终态),该自动机所识别的字符串的特点是_。 (分数:2.50)A.必须以 11 结尾的 0、1 串B.必须以 00 结尾的 0、1 串C.必须以 01 结尾的 0、1 串 D.必须以 10 结尾的 0、1 串解析:解析 有限自动机可识别的字符串,是指从有限自动机的初态出发,存在一条到达终态的路径,其上的标记所构成的字符串。本题 C 是终态,C 的前一状态只

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1