[语言类考试复习资料大全]中级软件设计师上午试题分类模拟7_第1页
[语言类考试复习资料大全]中级软件设计师上午试题分类模拟7_第2页
[语言类考试复习资料大全]中级软件设计师上午试题分类模拟7_第3页
[语言类考试复习资料大全]中级软件设计师上午试题分类模拟7_第4页
[语言类考试复习资料大全]中级软件设计师上午试题分类模拟7_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、书山有路勤为径,学海无涯苦作舟。祝愿天下莘莘学子:学业有成,金榜题名!语言类考试复习资料大全中级软件设计师上午试题分类模拟7中级软件设计师上午试题分类模拟7单项选择题问题:1. 以下关于解释程序和编译程序的叙述中,正确的是_。A.编译程序和解释程序都生成源程序的目标程序B.编译程序和解释程序都不生成源程序的目标程序C.编译程序生成源程序的目标程序,解释程序则不然D.编译程序不生成源程序的目标程序,而解释程序反之答案:C解析 编译程序,也称编译器,将源程序翻译成目标语言程序,然后在计算机上运行目标程序。虽然执行效率高,但编写出来的程序可读性很差,且难以修改和维护。 解释程序:也称解释器,它或者直

2、接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。 问题:2. 以下关于传值调用与引用调用的叙述中,正确的是_。 在传值调用方式下,可以实现形参和实参间双向传递数据的效果 在传值调用方式下,实参可以是变量,也可以是常量和表达式 在引用调用方式下,可以实现形参和实参间双向传递数据的效果 在引用调用方式下,实参可以是变量,也可以是常量和表达式 A.B.C.D.答案:C解析 传值调用最显著的特征是被调用的函数内部对形参的修改不影响实参的值。传值调用的参数传递和被调用函数内对参数的使用主要按下述原则:函数定义时形参被当作局部变量看待,在函数被调用时为形参分配存储单元;调用函数前,首先计算实

3、参的值,调用时将实参的值放入形参的存储单元;被调用函数内部对形参单元中的数据进行直接访问。 引用调用是将实参的地址传递给形参,使得形参的地址就是对应实参的地址。引用调用的参数传递和被调用函数内对参数的使用主要按下述原则处理:函数定义时形参被当作局部变量看待,在函数被调用时为形参分配存储单元;调用时将实参的地址放入形参的存储单元;被调用函数内部对形参单元中的数据(地址)进行间接访问。 问题:3. 可用于编写独立程序和快速脚本的语言是_。A.PythonB.PrologC.JavaD.C#答案:A解析 Python是一种面向对象的解释型程序设计语言,可用于编写独立程序、快速脚本和复杂应用的原型。P

4、ython也是一种脚本语言,它支持对操作系统底层的访问。 Prolog是一种逻辑型语言。Prolog程序是一系列事实、数据对象或事实间的具体关系和规则的集合。Prolog有很强的推理功能,适用于书写自动定理证明、专家系统、自然语言理解等问题的程序。 Java是一种面向对象的程序设计语言,能开发应用在Internet上且具有软、硬件独立性和交互能力的程序。Java可以一次编写而到处运行。 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#看起来与Java有着惊人的相似:它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程

5、。但是c与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET Windows网络框架的主角。 问题:4. 将高级语言源程序翻译成目标程序的是_。A.解释程序B.编译程序C.链接程序D.汇编程序答案:B解析 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序。解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的中间表示形式。解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。问题:5. 在对程序语言进行翻译的过程中,常采用一些与

6、之等价的中间代码表示形式。常用的中间代码表示不包括_。A.树B.后缀式C.四元式D.正则式答案:D解析 常用的中间代码有后缀式、三元式、四元式和树等形式。问题:6. 函数(过程)调用时,常采用传值与传地址两种方式在实参和形参间传递信息。以下叙述中,正确的是_。A.在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量B.在传值方式下,将实参的值传给形参,因此,实参必须是常量或变量C.在传地址方式下,将形参的值传给实参,因此,形参必须有地址D.在传地址方式下,将实参的值传给形参,因此,实参必须有地址答案:D解析 传值调用是指传递变量值的调用方式。在这种调用方式中,实参使用变量名或者表达式,

7、形参使用变量名。在调用时,调用函数将实参值拷贝到一个副本给形参,即使形参按顺序从对应的实参中获得值,这就相当于将实参值对应地赋给形参,使形参获值。传址调用是指在调用时传递变量地址值的传值调用。传址调用时要求调用函数的实参用地址值,而被调用函数的形参用指针,于是函数之间进行地址值的传递。这种传递是将实参的变量地址值传递给形参指针,即让形参指针指向实参变量,这种传递方式与调用函数拷贝实参值的副本给形参是不同的,它是让形参指针直接指向实参的变量。问题:7. 编译和解释是实现高级程序设计语言翻译两种基本形式。以下关于编译与解释的叙述中,正确的是_。A.在解释方式下,对源程序不进行词法分析和语法分析,直

8、接进行语义分析B.在解释方式下,无需进行词法、语法和语义分析,而是直接产生源程序的目标代码C.在编译方式下,必须进行词法、语法和语义分析,然后产生源程序的目标代码D.在编译方式下,必须先形成源程序的中间代码,然后再产生与机器对应的目标代码答案:C解析 编译程序是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序,编译的工作阶段包括:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。解释程序直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外

9、,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。问题:8. 若C程序的表达式中引用了未赋初值的变量,则_。A.编译时一定会报告错误信息,该程序不能允许B.可以通过编译并运行,但运行时一定会报告异常C.可以通过编译,但链接时一定会报告错误而不能运行D.可以通过编译并运行,但运行结果不一定是期望的结果答案:D解析 全局变量和静态局部变量在定义时如果没有初始化,编译时会自动初始化为0;而普通的局部变量,如果没有初始化,则其值是一个随机数。在C程序表达式中,只要引用的变量定义了,就可以通过编译并运行,但运行结果不一定是期望的结果。 函数t、f的定义如下所示,其中

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

11、依然为6,所以函数t的输出结果为16。如果函数t采用传值方式调用函数f,则形参r就是对实参a的引用,对r的修改就是对a的修改,在执行a=r+1时,a和r的值都变为6,执行r=r*2,a和r的值都变为12,并将r的值返回给x,因此函数t的输出结果为24。 问题:11. 传值与传地址是函数调用时常采用的信息传递方式,_。A.在传值方式下,是将形参的值传给实参B.在传值方式下,形参可以是任意形式的表达式C.在传地址方式下,是将实参的地址传给形参D.在传地址方式下,实参可以是任意形式的表达式答案:C解析 在传值方式下,是将实参的值传给形参,形参不能向实际参数传递信息;实参可以是表达式或常量,也可以是变

12、量或数组元素。 在传地址方式下,是将实参的地址传给形参,实参和形参都指向同一个对象,被调用函数中对形式参数的修改实际上就是对实际参数的修改,可以实现数据的双向传递。实参必须是变量地址、数组名,不能是表达式或常量。 形参就是形式参数,用一个变量来代表,不能是表达式。 问题:12. 以下关于变量和常量的叙述中,错误的是_。A.变量的取值在程序运行过程中可以改变,常量则不行B.变量具有类型属性,常量则没有C.变量具有对应的存储单元,常量则没有D.可以对变量赋值,不能对常量赋值答案:B解析 常量是在程序运行过程中值不可以改变的数据。根据数据的组织类型的不同,可以将数据分为基本数据类型、用户自定义数据类

13、型、构造类型等。变量具有类型属性,常量也有数据类型,如整数常量、字符串常量等。问题:13. 下面C程序段中count+语句执行的次数为_。 for(int i=1;i=11;i*=2) for(int j=1;j=i;j+) count+; A.15B.16C.31D.32答案:A解析 第1轮循环,i=1,count+执行1次,然后i=2;第2轮循环,i=2,count+执行2次,然后i=4;第3轮循环,i=4,count+执行4次,然后i=8;第4轮循环,i=8,count+执行8次,然后i=16,i11,不满足循环条件,循环结束。可以计算count+语句执行的次数为1+2+4+8=15。问

14、题:14. 程序的三种基本控制结构是_。A.过程、子程序和程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和跳转答案:B解析 程序的三种基本控制结构是顺序结构、选择结构和重复结构。问题:15. 函数调用时,基本的参数传递方式有传值与传地址两种,_。A.在传值方式下,形参将值传给实参B.在传值方式下,实参不能是数组元素C.在传地址方式下,形参和实参间可以实现数据的双向传递D.在传地址方式下,实参可以是任意的变量和表达式答案:C解析 首先看A选项。在传值方式下,对应的实参和形参是两个独立的实体,占用不同的内存单元,调用函数时,系统把实参值复制一份给形参,便断开两者的联系,形参值的改变对实

15、参无影响。因此,“传值”是单向的,只能由实参传递给形参。 B选项,形参为传值方式下的简单变量,实参可以是与其同类型的常量、变量、数组元素或表达式。 C选项,在传址方式下,函数调用时,系统将实参的地址传递给形参,即这时参数传递的不是数据本身,而是数据在内存中的地址。所以在被调用函数中,任何对形式参数的访问,都被认为是对形式参数的间接访问。实参与形参占用不同的存储单元,传递方式是双向的,形参值的改变将影响实参值。故C选项正确。 D选项,形参为传址方式时,实参如果为常量或表达式,则传址无效,相当于传值方式。 问题:16. 下面关于程序语言的叙述,错误的是_。A.脚本语言属于动态语言,其程序结构可以在

16、运行中改变B.脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序C.PHP、JavaScript属于静态语言,其所有成分可在编译时确定D.C#、Java语言属于静态语言,其所有成分可在编译时确定答案:C解析 脚本是一种特定的描述性语言,是依据一定的格式编写的可执行文件,又称做宏或批处理文件。脚本通常可以由应用程序临时调用并执行。脚本语言一般都是以文本形式存在,类似于一种命令。有些程序,如C、C+、Java等则必须先经过编译,将源代码转换为二进制代码之后才可执行。而像Perl、JavaScript、VBScript等则不需要事先编译,只要利用合适的解释器便可以执行代码。 动态类型语言是指

17、在运行期间才去做数据类型检查的语言。也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来,不用编译即可运行。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如JavaScript属于动态类型语言。静态类型语言的数据类型是在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型。C/C+是静态类型语言的典型代表,其他的静态类型语言还有C#、Java等。故错误的为选项C。 问题:17. 程序设计语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体的while语句和先执行循环体再判断循环条件的

18、do-while语句。关于这两种循环语句,在不改变循环体的条件下,_是正确的。A.while语句的功能可由do-while语句实现B.do-while语句的功能可由while语句实现C.若已知循环体的次数,则只能使用while语句D.循环条件相同时,do-while语句的执行效率更高答案:C问题:18. 下列叙述中错误的是_。A.面向对象程序设计语言可支持过程化的程序设计B.给定算法的时间复杂性与实现该算法所采用的程序设计语言无关C.与汇编语言相比,采用脚本语言编程可获得更高的运行效率D.面向对象程序设计语言不支持对一个对象的成员变量进行直接访问答案:C问题:19. 在对高级语言源程序进行编译

19、的过程中,为源程序中变量所分配的存储单元的地址属于_。A.逻辑地址B.物理地址C.接口地址D.线性地址答案:A解析 在编译时产生的目标文件都是从地址0开始的,在连接时将各个目标文件进行符号替换,这时会修改相应的地址,最后产生一个从地址0开始的可执行文件。在该可执行文件中的地址称为逻辑地址。问题:20. 以下关于语言L=anbn|n1)的叙述中,正确的是_。A.可用正规式“aa*bb*”描述,但不能通过有限自动机识别B.可用正规式“ambm”表示,也可用有限自动机识别C.不能用正规式表示,但可以用有限自动机识别D.不能用正规式表示,也不能通过有限自动机识别答案:D解析 根据正规式和有限自动机的规

20、范,结合题中给出的语言L,很明显都无法将语言L表示和识别出来。 编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将需要的信息正确地填入合理组织的_中;对可执行语句,则是_。 21.A.符号表B.栈C.队列D.树答案:A22.A.翻译成机器代码并加以执行B.转换成语法树C.翻译成中间代码或目标代码D.转换成有限自动机答案:C解析 编译程序的功能是把用高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。编译程序的工作过程可以分为6个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,实际的编译器中可能会将其中的某些阶段结合在

21、一起进行处理。各个阶段逻辑上可以划分为前端和后端两部分。前端包括从词法分析到中间代码生成各个阶段的工作,后端包括中间代码优化、目标代码生成与优化等阶段。这样,以中间代码为分水岭,把编译器分成了与机器有关的部分和与机器无关的部分。符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行怏速有效地查找、插入、修改和删除等操作。问题:23. 语言L=ambn|m0,n1的正规表达式是_。A.aa*bb*B.a*bb*C.aa*b*D.a*b*答案:B解析 m0,am说明可以有0个a或者多个a;n1,bn说明至少有1个b或者多个b。a*表示由0个或者

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

23、5. 以下关于程序错误的叙述中,正确的是_。A.编译正确的程序必然不包含语法错误B.编译正确的程序必然不包含语义错误C.除数为0的错误可以在语义分析阶段检查出来D.除数为0的错误可以在语法分析阶段检查出来答案:C解析 用户编写的源程序不可避免地会有一些错误,这些错误大致可以分为静态错误和动态错误。动态错误也称动态语义错误,它们发生在程序运行时,例如除数为0、引用数组元素下标错误等。静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误,如单词拼写错误、标点符号错、表达式缺少操作数、括号不匹配等有关语言结构上的错误称为语法错误,而语义分析时发现的运算符与运算对象不合法等错误属于静态语义

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

25、项,压入栈S中。如果后缀表达式未读完,则重复上面过程,最后输出栈硕的数值则为结束。问题:27. 下图所示为一个有限自动机(其中,A是初态、C是终态),该自动机所识别的字符串的特点是_。 A.必须以1 1结尾的0、1串B.必须以00结尾的0、1串C.必须以01结尾的0、1串D.必须以10结尾的0、1串答案:C解析 有限自动机可识别的字符串,是指从有限自动机的初态出发,存在一条到达终态的路径,其上的标记所构成的字符串。本题C是终态,C的前一状态只能是B,由B到C输入的是1;B的前一状态可以是A,也可以是B,也可以是C,但输入的都是0。可见,该有限自动机识别的串必须以01结尾。问题:28. 下图所示

26、为一个有限自动机(其中,A是初态、C是终态),该自动机识别的语言可用正规式_表示。 A.(0|1)*01B.1*0*10*1C.1*(0)*01D.1*(0|10)*1*答案:A解析 在正规式中,符号*表示重复若干次(包括0次),符号|表示“或”。在状态A,可以输入1或0,如果输入1还可以回到状态A,如果输入0直接到达状态B;在状态B,可以输入0或1,如果输入0则还回到状态B,而输入1,则进入状态C;在状态C可以输入0或1,输入0到达状态B,输入1到达状态A,但由于C是终态,自动机可识别的语言是由0、1构成的字符串的集合,但该集合必须以01结束,因此选项A正确。 算术表达式采用逆波兰式表示时不

27、用括号,可以利用_进行求值。与逆波兰式ab-cd+*对应的中缀表达式是_。 29.A.数组B.栈C.队列D.散列表答案:B30.A.a-b+c*dB.(a-b)*c+dC.(a-b)*(c+d)D.a-b*c+d答案:C解析 逆波兰式表示方式把运算符写在运算对象的后面,不需要使用括号。由于后缀表示中的各个运算是按顺序执行的,因此,它的计值很容易实现。为此,仅需从左到右依次扫视表达式中的各个符号,每遇一个运算对象,就把它压入栈顶暂存起来;每遇一个二元(或一元)运算符时,就取出栈顶的两个(或一个)运算对象进行相应的运算,并用运算结果替换栈顶的这两(或一)个运算对象,然后再继续扫视余留的符号,如此等

28、等,直到扫视完整个表达式为止。当上述过程结束时,整个表达式的值将留于栈顶。 a-b+c*d对应的逆波兰式为:ab-cd*+ (a-b)*c+d对应的逆波兰式为:ab-c*d+ (a-b)*(c+d)对应的逆波兰式为:ab-cd+* a-b*c+d对应的逆波兰式为:abc*-d+ 问题:31. 若一种程序设计语言规定其程序中的数据必须具有类型,则有利于_。 在翻译程序的过程中为数据合理分配存储单元 对参与表达式计算的数据对象进行检查 定义和应用动态数据结构 规定数据对象的取值范围及能够进行的运算 对数据进行强制类型转换 A.B.C.D.答案:B解析 数据是程序操作的对象,类型说明数据占用的内存和

29、存放形式。数据类型不仅可用于在基础机器中完成对值的布局,还可以用于检查表达式中对运算的应用是否正确。问题:32. 以下关于高级程序设计语言翻译的叙述中,正确的是_。A.可以先进行语法分析,再进行词法分析B.在语法分析阶段可以发现程序中的所有错误C.语义分析阶段的工作与目标机器的体系结构密切相关D.目标代码生成阶段的工作与目标机器的体系结构密切相关答案:D解析 对于高级程序设计语言,编译程序会把编写的源程序翻译成与之等价的目标程序。编译程序的工作过程分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。语法分析要在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法

30、单位。可见,要先进行词法分析,然后进行语法分析,故选项A错误。在语法分析阶段能发现语法错误,但不能发现语义错误,因此选项B错误。语义分析阶段主要检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用,可见,语义分析阶段的工作与目标机器的体系结构关联不大,选项C错误。目标代码生成阶段的任务是把中间代码变化成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。问题:33. 下图所示为一个有限自动机(其中,A是初态、C是终态),该自动机可识别_。 A.0000B.1111C.0101D.1010答案:C解析 有限自动机可识别的字符串,是指从

31、有限自动机的初态出发,存在一条到达终态的路径,其上的标记所构成的字符串。 对于“0000”,其识别路径是状态A状态B状态B状态B状态B,没有到达态。 对于“1111”,其识别路径是状态A状态A状态A状态A状态A,没有到达态。 对于“0101”,其识别路径是状态A状态B状态C状态B状态C,状态C为终态,可以识别。 对于“1010”,其识别路径是状态A状态A状态B状态C状态B,经过了终态,但没有以终态结束。 问题:34. 编译程序分析源程序的阶段依次是_。A.词法分析、语法分析、语义分析B.语法分析、词法分析、语义分析C.语义分析、语法分析、词法分析D.语义分析、词法分析、语法分析答案:A解析 词

32、法分析是编译过程的第一个阶段,其任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。如果源程序中没有语法错误,语法分析后就能正确地构造其语法树。语义分析阶段的主要任务是检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。问题:35. 下图所示的有限自动机中,0是初始状态,3是终止状态,该自动机可以识别_。 A.ababB.aaaaC.bbbbD.abba答案:B解析 从初始状态到终止状态有多条路径。在状态0输入a到达状态2,在状态2可输入a或b,输入a到达状态

33、1,输入b到达状态3,状态3下输入a还回到状态3;在状态1可输入a或b,输入a到达状态3,输入b到达状态2。问题:36. 下图所示为两个有限自动机M1和M2(A是初态、C是终态),_。 A.M1和M2都是确定的有限自动机B.M1和M2都是不确定的有限自动机C.M1是确定的有限自动机,M2是不确定的有限自动机D.M1是不确定的有限自动机,M2是确定的有限自动机答案:D解析 确定有限自动机对每一个可能的输入只有一个状态的转移。非确定有限自动机对每一个可能的输入可以有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。有限自动机M1在状态A时,输入0可以回到状态A,也可以到达状态B,可见M

34、1是不确定的。有限自动机M2的每个状态下的输入都只有一个转移状态。问题:37. 以下关于汇编语言的叙述中,错误的是_。A.汇编语言源程序中的指令语句将被翻译成机器代码B.汇编程序先将源程序中的伪指令翻译成机器代码,然后再翻译指令语句C.汇编程序以汇编语言源程序为输入,以机器语言表示的目标程序为输出D.汇编语言的指令语句必须具有操作码字段,可以没有操作数字段答案:B解析 汇编程序的功能是将汇编语言所编写的源程序翻译成机器指令程序。汇编语言源程序语句可分为指令语句、伪指令语句和宏指令语句。指令语句汇编后产生相应的机器代码;伪指令语句指示汇编程序在汇编源程序时完成某些操作,汇编后不产生机器代码。问题

35、:38. 逻辑表达式“abc(bx0)”的后缀式为_。(其中、分别表示逻辑与、逻辑或,表示关系运算大于,对逻辑表达式进行短路求值)A.abcbx0B.abcbxC.abcbx0D.abcbx0答案:D解析 后缀式把运算符写在运算对象后面。“逻辑与”运算的优先级高于“逻辑或”运算。对于逻辑表达式“abc(bx0)”,从运算符的优先级方面考虑,需先对“ab”求值,然后对“c(bx0)”求值,最后进行“”运算,因此后缀式为“abcbx0”。问题:39. 编译程序对C语言源程序进行语法分析时,可以确定_。A.变量是否定义(或声明)B.变量的值是否正确C.循环语句的执行次数D.循环条件是否正确答案:A解

36、析 语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”、“语句”、“表达式”等等。语法分析程序判断源程序在结构上是否正确。题目中,只有选项A可以在语法分析时确定。问题:40. 以下关于高级语言程序的编译和解释的叙述中,正确的是_。A.编译方式下,可以省略对源程序的词法分析、语法分析B.解释方式下,可以省略对源程序的词法分析、语法分析C.编译方式下,在机器上运行的目标程序完全独立于源程序D.解释方式下,在机器上运行的目标程序完全独立于源程序答案:C解析 编译和解释是语言处理的两种基本方式。编译过程包括词法分析、语法分析、语义分析、中间代码

37、生成、代码优化和目标代码生成等阶段,以及符号表管理和出错处理模块。解释过程在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。 这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。 问题:41. 对于正规式0*(10*1)*0*,其正规集中字符串的特点是_。A.开头和结尾

38、必须是0B.1必须出现偶数次C.0不能连续出现D.1不能连续出现答案:B解析 闭包运算符“*”将其运算对象进行若干次连接,因此0*表示若干个0构成的串,而(10*1)*则表示偶数个1构成的串。问题:42. 将高级语言源程序翻译为机器语言程序的过程中常引入中间代码。以下关于中间代码的叙述中,错误的是_。A.不同的高级程序语言可以产生同一种中间代码B.使用中间代码有利于进行与机器无关的优化处理C.使用中间代码有利于提高编译程序的可移植性D.中间代码与机器语言代码在指令结构上必须一致答案:D解析 中间代码生成阶段的工作是根据语义分析的输出生成中间代码。“中间代码”是一种简单而且含义明确的记号系统,可

39、以有若干种形式,它们的共同特征就是与具体的机器无关。问题:43. 以下关于编译系统对某高级语言进行翻译的叙述中,错误的是_。A.训法分析将把源程序看做一个线性字符序列进行分析B.语法分析阶段可以发现程序中所有的语法错误C.语义分析阶段可以发现程序中所有的语义错误D.目标代码生成阶段的工作与目标机器的体系结构相关答案:C解析 在词法分析阶段,源程序可以简单地被看成一个多行的字符串。这一阶段的任务是对源程序从前到后(从左到右)逐个字符进行扫描,从中识别出一个个“单词”符号,语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解为各类语法单位,检查其中的语法错误;语义分析阶段的主要

40、任务是检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用;目标代码生成是编译器工作的最后一个阶段,这一阶段的任务是把中间代码变化为特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。因此说法C中发现所有语义错误是不对的。问题:44. 由某上下文无关文法MS推导出某句子的分析树如下图所示,则错误的叙述是_。 A.该文法推导出的句子必须以a开头B.acabcbdcc是该文法推导出的一个句子C.SaAcB是该文法的一个产生式D.a、b、c、d属于该文法的终结符号集答案:A解析 上图所示为某上下文无关文法MS推导出某句子的分析树,通过观察

41、上图,只要稍作推导就可推出acabcbdcc是该文法推导出的一个句子;看该分析树的第一层分支即可知SaAcB是该文法的一个产生式;而a、b、c、d因为在图中是分析树的叶子,所以都是该文法的终结符号;右边的B分支下有SBd,B,所以该文法推导出的句子不一定是a开头的。问题:45. 已知某高级语言源程序A经编译后得到机器C上的目标程序B,则_。A.对B进行反编译,不能还原出源程序AB.对B进行反汇编,不能得到与源程序A等价的汇编程序代码C.对B进行反编译,得到的是源程序A的变量声明和算法流程D.对A和B进行交叉编泽,可以产生在机器C上运行的动态链接库答案:D解析 高级语言源程序经过编译变成可执行文

42、件,反编译就是其逆过程。但通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 将C、Pascal等高级语言编出来的程序进行编译,生成可以被计算机系统直接执行的文件。反汇编是指将这些执行文件反编译还原成汇编语言或其他高级语言。 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。 问题:46. 如下图所示有限自动机的特点是_。 A.识别的0、1串是以0开头且以1结尾B.识别的0、1串中1的数目为偶数C.识别的0、1串中0后面必须是1D.识别的0、1串中1不能连续

43、出现答案:D解析 由上图可知,从初始态q0输入0仍然到q0或者输入1到达终态q1,从q1还可以输入0重新到达初始态q0,所以这个有限自动机识别的0、1串不一定是以0开头的,1的数目的奇偶性也没办法确定,0后面也可以是0,所以选项A、B、C都是错误的。从q0输入1到达终态q1后串结束,或者q0输入0再到q0,所以这个串中的1不会连续出现,D是正确的。问题:47. 由a、b构造且仅包含偶数个a的串的集合用正规式表示为_。A.(a*a)*b*B.(b*(ab*a)*)*C.(a*(ba)*b)*D.(ab)*(aa)*答案:B解析 本题主要考查考生对闭包概念的理解。 *指包括空串在内的上所有字符串的

44、集合。关键在于*可取空串,理解了这个概念就不难看出答案B是正确的。 问题:48. 程序语言的大多数语法现象可用上下文无关文法描述。对于一个上下文无关文法G=(N,T,P,S),其中N是非终结符号的集合,T是终结符号的集合,P是产生式集合,S是开始符号。令集合V=NT那么G所描述的语言是_的集合。A.从S出发推导出的包含V中所有符号的串B.从S出发推导出的仅包含T中符号的串C.N中所有符号组成的串D.T中所有符号组成的串答案:A解析 上下文无关文法要求,G的任何产生式形如A,AN,V*,可见G所描述的语言是从S出发推导出的包含V中所有符号的串的集合。问题:49. 设某上下文无关文法如下:S11|1001|S0|SS,则该文法产生的所有二进制字符串都具有的特点是_。A.能被3整除B.0、1出现的次数相等C.0和1的出现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论