[计算机类试卷]软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编3及答案与解析.doc

上传人:王申宇 文档编号:507056 上传时间:2018-11-29 格式:DOC 页数:27 大小:244.50KB
下载 相关 举报
[计算机类试卷]软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编3及答案与解析.doc_第1页
第1页 / 共27页
[计算机类试卷]软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编3及答案与解析.doc_第2页
第2页 / 共27页
[计算机类试卷]软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编3及答案与解析.doc_第3页
第3页 / 共27页
[计算机类试卷]软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编3及答案与解析.doc_第4页
第4页 / 共27页
[计算机类试卷]软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编3及答案与解析.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编 3及答案与解析 1 将高级语言程序翻译为机器语言程序的过程中,常引入中间代码,其好处是 (48)的适当工具。 ( A)有利于进行反编译处理 ( B)有利于进行与机器无关的优化处理 ( C)尽早发现语法错误 ( D)可以简化语法和语义分析 2 以下关于程序错误的叙述中,正确的是 (50)。 ( A)编译正确的程序必然不包含语法错误 ( B)编译正确的程序必然不包含语义错误 ( C)除数为 0的错误可以在语义分析阶段检查出来 ( D)除数为 0的错误 可以在语法分析阶段检查出来 3 在对程序语言进行翻译的过程中,常采用一些与之等价的中

2、间代码表示形式。常用的中间代码表示不包括 (49)。 ( A)树 ( B)后缀式 ( C)四元式 ( D)正则式 4 编译和解释是实现高级程序设计语言翻译的两种的基本形式。以下关于编译与解释的叙述中,正确的是 (51)。 ( A)在解释方式下,对源程序不进行词法分析和语法分析,直接进行语义分析 ( B)在解释方式下,无须进行词法、语法和语义分析,而是直接产生源程序的目标代码 ( C)在编译方式下,必须进行词法、语法和语义 分析,然后产生源程序的目标代码 ( D)在编译方式下,必须先形成源程序的中间代码,然后再产生与机器对应的目标代码 5 编译程序分析源程序的阶段依次是 (21)。 ( A)词法

3、分析、语法分析、语义分析 ( B)语法分析、词法分析、语义分析 ( C)语义分析、语法分析、词法分析 ( D)语义分析、词法分析、语法分析 6 编译程序对 C语言源程序进行语法分析时,可以确定 (22)。 ( A)变量是否定义 (或声明 ) ( B)变量的值是否正确 ( C)循环语句的执行次数 ( D)循环条件是否正确 7 以下关于高 级语言程序的编译和解释的叙述中,正确的是 (48)。 ( A)编译方式下,可以省略对源程序的词法分析、语法分析 ( B)解释方式下,可以省略对源程序的词法分析、语法分析 ( C)编译方式下,在机器上运行的目标程序完全独立于源程序 ( D)解释方式下,在机器上运行

4、的目标程序完全独立于源程序 8 以下关于语言 L=anbn1n 1)的叙述中,正确的是 (48)。 ( A)可用正规式 “aa*bb*”描述,但不能通过有限自动机识别 ( B)可用正规式 “ambm”表示,也可用有限自动机识别 ( C)不能用正规式表示,但 可以用有限自动机识别 ( D)不能用正规式表示,也不能通过有限自动机识别 9 已知文法 G: SA0 81, AS111 , BS010 ,其中 S是开始符号。从 S出发可以推导出 (21)。 ( A)所有由 0构成的字符串 ( B)所有由 1构成的字符串 ( C)某些 0和 1个数相等的字符串 ( D)所有 0和 1个数不同的字符串 10

5、 算术表达式 a+(bc)*d的后缀式是 (22)。 (一、 +、 *表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例 ) ( A) bcd*a+ ( B) abcd*+ ( C) ab+cd*: ( D) abcd一 *+ 11 对高级语言源程序进行编译的过程中,有穷自动机 (NFA或 DFA)是进行 (49)。 ( A)词法分析 ( B)语法分析 ( C)语义分析 ( D)出错处理 12 语言 L=ambn1m0, n11的正规表达式是 (21)。 ( A) aa*bb* ( B) a*bb* ( C) aa*b* ( D) a*b* 13 算术表达式 (a-b)*c+d的后缀式是

6、 (22)(一、 +、 *表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例 )。 ( A) abcd一 *+ ( B) ab一 cd*+ ( C) abc*d+ ( D) abcd*+ 14 算术表达式 x一 (y+c)*8的后缀式 (22)(一、 +、 *表示算术的减、加、乘运算,运算符的优先级和结合型遵循惯例 )。 ( A) xyc8一 +* ( B) xyc+8* ( C) xyc8*+一 ( D) xyc+8*一 15 图 28所示为一个有限自动机 (其中, A是初态, C是终态 ),该自动机所识别的字符串的特点是 (48)。 ( A)必须以 11结尾的 0、 1串 ( B)必

7、须以 00结尾的 0、 1串 ( C)必须以 01结尾的 0、 1串 ( D)必须以 10结尾的 0、 1串 16 图 2 9所示为一个有限自动机 (其中, A是初态、 C是终态 ),该自动机识别的语言可用正规式 (48)表示。 ( A) (011)*01 ( B) 1*0*10*1 ( C) 1*(0)*01 ( D) 1*(0110)*1* 17 包含 8个成员的开发小组的沟通路径最多有 (15)条。 ( A) 28 ( B) 32 ( C) 56 ( D) 64 18 图 210所示为一个有限自动机 (其中, A是初态、 C是终态 ),该自动机可识别(49)。 ( A) 0 ( B) 1

8、111 ( C) 101 ( D) 1010 19 图 2一 11所示的有限自动机中, 0是初始状态, 3是终止状态,该自动机可以识别 (22)。 ( A) abab ( B) aaaa ( C) bbbb ( D) abba 20 (48)。( A) M1和 M2都是确定的有限自动机 ( B) M1和 M2都是不确定的有限自动机 ( C) M1是确定的有限自动机, M2是不确定的有限自动机 ( D) M1是不确定的有限自动机, M2是确定的有限自动机 21 逻辑表达式 “a b c (b x0)”的后缀式为 (21)。 (其中 、 分别表示逻辑与、逻辑或, 表示关系运算 大于,对逻辑表达式进

9、行短路求值 ) ( A) abcbx0 ( B) ab c b x0 ( C) ab cb x0 ( D) ab cbx0 22 对于正规式 0*(10*1)*0*,其正规集中字符串的特点是 (50)。 ( A)开头和结尾必须是 0 ( B) 1必须出现偶数次 ( C) 0不能连续出现 ( D) 1不能连续出现 23 以下关于传值调用与引用调用的叙述中,正确的是 (21)。 在传值调用方式下,可以实现形参和实参问双向传递数据的效果 在传值调用方式下,实参可以是变量,也可以是 常量和表达式 在引用调用方式下,可以实现形参和实参间双向传递数据的效果 在引用调用方式下,实参可以是变量,也可以足常量和

10、表达式 ( A) ( B) ( C) ( D) 24 程序运行过程中常使用参数在函数 (过程 )间传递信息,引用调用传递的是实参的 (20)。 ( A)地址 ( B)类型 ( C)名称 ( D)值 25 弱类型语言 (动态类型语言 )是指不需要进行变量对象类型声明的语言。( 50)属于弱类型语言。 ( A) Java ( B) C C+ ( C) Pvthon ( D) C# 26 可用于编写独立程序和快速脚本的语言是 (20)。 ( A) Python ( B) Prolog ( C) JaVa ( D) C# 27 对于逻辑表达式 “xandyornotz”, and、 or、 not分别

11、是逻辑与、或、非运算,优先级从高到低为 not、 and、 or, and、 or为左结合, not为右结合,若进行短路计算,则 (20). ( A) x为真时,整个表达式的值为真,不需要计算 y和 z的值 ( B) x为假时,整个表达式的值为假,不需要计算 y和 z的值 ( C) x为真时,根据 y的值决定是否需要计算 z的值 ( D) x为假时,根据 y的值决定是否需要计算 z的值 28 函数 (过程 )调用时,常采用传值与传地址两种方式在实参和形参间传递信息。以下叙述中,正确的是 (50)。 ( A)在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量 ( B)在传值方式下,将实

12、参的值传给形参,因此,实参必须是常量或变量 ( C)在传地址方式下,将形参的值传给实参,因此,形参必须有地址 ( D)在传地址方式下,将实参的值传给形参,因此,实参必须有地址 29 若 C程序的表达式中引用了未赋初值的变量,则 (20)。 ( A)编译 时一定会报告错误信息,该程序不能允许 ( B)可以通过编译并运行,但运行时一定会报告异常 ( C)可以通过编译,但链接时一定会报告错误而不能运行 ( D)可以通过编译并运行,但运行结果不一定是期望的结果 30 在 KMP模式匹配算法中,需要求解模式串 p的 next函数值,其定义如下 (其中, i为模式串字符的序号 )。对于模式串 “abaab

13、aca”,其 next函数值序列为 (57)。( A) 1111111 ( B) 1122341 ( C) 1234567 ( D) 1122334 31 若一种程序设计语言规定其程 序中的数据必须具有类型,则有利于 (22)。 在翻译程序的过程中为数据合理分配存储单元 埘参与表达式计算的数据对象进行检查 定义和应用动态数据结构 规定数据对象的取值范围及能够进行的运算 对数据进行强制类型转换 ( A) ( B) ( C) ( D) 32 以下关于高级程序设计语言翻译的叙述中,正确的是 (48)。 ( A)可以先进行语法分析,再进行词法分析 ( B)在语法分析阶段可以发现程序中的所有错误 ( C

14、)语义分析阶段的工作与目标机器的体系结构密切相关 ( D)目标 代码生成阶段的工作与目标机器的体系结构密切相关 33 传值与传地址是函数调用时常采用的信息传递方式, (50)。 ( A)在传值方式下,是将形参的值传给实参 ( B)在传值方式下,形参可以是任意形式的表达式 ( C)在传地址方式下,是将实参的地址传给形参 ( D)在传地址方式下,实参可以足任意形式的表达式 34 以下关于汇编语言的叙述中,错误的是 (50)。 ( A)汇编语言源程序中的指令语句将被翻译成机器代码 ( B)汇编程序先将源程序中的伪指令翻译成机器代码,然后再翻译指令语句 ( C)汇编程序以汇 编语言源程序为输入,以机器

15、语言表示的目标程序为输出 ( D)汇编语言的指令语句必须具有操作码字段,可以没有操作数字段 35 下面 C程序段中 count+语句执行的次数为 (64)。 for(inti=1; i*=2) for(intj=1; j ( A) 15 ( B) 16 ( C) 3l ( D) 32 36 程序的三种基本控制结构是 (33)。 ( A)过程、子程序分程序 ( B)顺序、选择和重复 ( C)递归、堆栈和队列 ( D)调用、返回和跳转 37 以下关于解释程序和编译程序的叙述中,正确的是 (20)。 ( A)编译程序和解释程序都生成源程序的目标程序 ( B)编译程序和解释程序都不生成源程序的目标程序

16、 ( C)编译程序生成源程序的目标程序,解释程序则不然 ( D)编译程序不生成源程序的目标程序,而解释程序反之 38 在对高级语言源程序进行编译的过程中,为源程序中变量所分配的存储单元的地址属于 (22)。 ( A)逻辑地址 ( B)物理地址 ( C)接口地址 ( D)线性地址 38 函数 t、 f的定义如下所示,其中, a是整型全局变量。设调用函数 t前 a的值为5,则在函数中以传值调用 (call byvalue)方式调用函数 f时,输出为 (49);在函数 t中以引用调用 (callbyreference)方式调用函数时,输出为 (50)。39 (49) ( A) 12 ( B) 16

17、( C) 20 ( D) 24 40 (50) ( A) 12 ( B) 16 ( C) 20 ( D) 24 40 编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将需要的信息正确地填入合理组织的 (49)中;对可执行语句,则是 (50)。 41 (49) ( A)符号表 ( B)栈 ( C)队列 ( D)树 42 (50) ( A)翻译成机器代码并加以执行 ( B)转换成语法树 ( C)翻译成中间代码或目标代码 ( D)转换成有限自动机 软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编 3答案与解析 1 【正确答案】 B 【试题解析】 本题

18、考查程序语言基础知识。 “中间代码 ”是一种简单且含义明确的记号系统,与具体的机器无关,可以有若干种形式。可以将不同的高级程序语言翻译成同一种中间代码。由于与具体机器无关,使用中间代码有利于进行与机器无关的优化处理,以及提高编译程序的可移植 性。 【知识模块】 程序语言 2 【正确答案】 C 【试题解析】 用户编写的源程序不可避免地会有一些错误,这些错误大致可以分为静态错误和动态错误。动态错误也称动态语义错误,它们发生在程序运行时,例如除数为 0、引用数组元素 F标错误等。静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误,如单词拼写错误、标点符号错、表达式缺少操作数、括号不匹配

19、等有关语言结构上的错误称为语法错误,而语义分析时发现的运算符与运算对象不合法等错误属丁二静态语义错误。 【知识模块】 程序语言 3 【正确答案】 D 【试题解析】 常用的中间代码有后缀式、三元式、四元式和树等形式。 【知识模块】 程序语言 4 【正确答案】 C 【试题解析】 编译程序是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序,编译的工作阶段包括:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。解释程序直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如 BASIC解释程序。编译程序与解释程序最大的区别之一在于前者生成目

20、标代码,而后者不生成;此 外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。 【知识模块】 程序语言 5 【正确答案】 A 【试题解析】 词法分析是编译过程的第一个阶段,其任务是对源程序从前到后(从左到右 )逐个字符地扫描,从中识别出一个个 “单词 ”符号。语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。如果源程序中没有语法错误,语法分析后就能正确地构造其语法树。语义分析阶段的主要任务是检查源程序是否含有静态语义错误,并收集类型信息供后面的代码 生成阶段使用。 【知识模块】 程序语言 6 【正确答案】 A 【试题解

21、析】 语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如 “程序 ”、 “语句 ”、 “表达式 ”等等。语法分析程序判断源程序在结构上是否正确。题目中,只选项 A可以在语法分析时可以确定。 【知识模块】 程序语言 7 【正确答案】 C 【试题解析】 编译和解释是语言处理的两种基本方式。编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,以 及符号表管理和出错处理模块。解释过程在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。这两种语言处理程序的根本

22、区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序 (或其某种等价表示 )要参与到程序的运行过程中,运行程序的控制权在解释程序。 【知识模块】 程序语言 8 【正确答案】 D 【试题解析】 根据正规式和有限自动机的规范,结合题中给出的语言 L,很明显都无法将语言 L表示和识别出来。 【知识模块】 程序语言 9 【正确答案】 C 【试题解析】 从开始符出发,能推导出两种串:一种以 0结尾,一种以 l结尾。以 0结尾的前面必须是 1,而这个 1前面可能还有一个递归的 S;以 1结尾的前面必须是 0,而这个 0前

23、面可能还有一个递归的 S。由此可以知道,这是文法可以导出某些 0和 1的个数相同的串。之所以说是某些,而不是所有,是因为,该文法所导出的串中 0附近必有 1, 1附近必有 0,比如: 01, 0101, 0110等等。但000111就不能导出。 【知识模块】 程序语言 10 【正确答案】 D 【试题解析】 后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行,把运算符号移动到对应的括号后面,则变成: (a+bcd*),再次去掉括号结果为 D。 【知识模块】 程序语言 11 【正确答案】 A 【试题解析】 DFA对于同一个输入只有一个确定的下一状态

24、,所以词法分析器优先采用它。 【知识模块】 程序语言 12 【正确答案 】 B 【试题解析】 m0, am说明可以有 0个 a或者多个 a; n1, bn说明至少有 1个 b或者多个 b。 a*表示由 0个或者多个 a构成的集合,可以表示 am m0); b*表示由 0个或者多个 b构成的集合, bb*才可以表示 (bn n1。 【知识模块】 程序语言 13 【正确答案】 C 【试题解析】 后缀表达式的计算是通过栈来实现的。算术表达式 (a_b)*c+d首先计算 ab,因此 a、 b先入栈,当遇到 “一 ”时出栈,得出结果并压入栈;然后计算与 c相乘的结果,将 c入栈,遇到 “*”时,出栈,计

25、算乘积并将结 果入栈;最后进行与d的加法运算,将 d入栈,遇到 “+”时出栈,计算结果。 【知识模块】 程序语言 14 【正确答案】 D 【试题解析】 后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行 (不再考虑运算符的优先规则 ),如(2+1)*3的后缀式为 21+3*。运用后缀表达式进行计算的具体做法:建立一个栈 S,从左到右读后缀表达式,如果读到操作数就将它压入栈 S中,如果读到 n元运算符 (即需要参数个数为 n的运算符 )则取出由栈项向下的 n项按操作符运算,再将运算的结果 代替原栈顶的 n项,压入栈 S中。如果后缀表达式未读完,则重

26、复上面过程,最后输出栈顶的数值则为结束。 【知识模块】 程序语言 15 【正确答案】 C 【试题解析】 有限自动机可识别的字符串,是指从有限自动机的初态出发,存在一条到达终态的路径,其上的标记所构成的字符串。本题 C是终态, C的前一状态只能是 B,由 B到 C输入的是 1; B的前一状态可以是 A,也可以是 B,也可以是 C,但输入的都是 0。可见,该有限自动机识别的串必须以 0l结尾。 【知识模块】 程序语言 16 【正确答案】 A 【试题解析 】 在正规式中,符号 *表示重复若干次 (包括 0次 ),符号 1表示 “或 ”。在状态 A,可以输入 1或 0,如果输入 1还可以回到状态 A,

27、如果输入 0直接到达状态 B;在状态 B,可以输入 0或 1,如果输入 0则还回到状态 B,而输入 1,则进入到状态 C;在状态 C可以输入 0或 1,输入 0到达状态 B,输入 1到达状态A,但由于 C是终态,自动机可识别的语言是由 0、 1构成的字符串的集合,但该集合必须以 01结果,因此选项 A正确。 【知识模块】 程序语言 17 【正确答案】 A 【试题解析】 需要协作沟通的人员的数量影响着开发成本,因 为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果。人与人之间必需通过沟通来解决各自承担任务之间的接口问题,如果项目有 n个工作人员,则有 n(n-1) 2个相互

28、沟通的路径。很明显,包含 8个成员的开发小组的沟通路径最多有 28条。这其实是一道简单的图论问题,相当于求包含 8个顶点的无向图中最多有多少条边。 【知识模块】 程序语言 18 【正确答案】 C 【试题解析】 有限自动机可识别的字符串,是指从有限自动机的初态出发,存在一条到达终态的路径,其上的标记所构成的字符串。对于 “0000”,其识别路径是状态 A 状态 B 状态 B 状态 B 状态 B,没有到达态。对于 “1111”,其识别路径是状态 A 状态 A 状态 A 状态 A 状态 A,没有到达态。对于 “0101”,其识别路径是状态 A 状态 B 状态 C 状态 B 状态 C,状态 C为终态,

29、可以识别。对于 “1010”,其识别路径是状态 A 状态 A 状态 B 状态 C 状态 B,经过了终态,但没有以终态结束。 【知识模块】 程序语言 19 【正确答案】 B 【试题解析】 从初始状态到终止状态有多条路径。在状态 0输入 a到达状态 2,在状态 2可输入 a或 b, 输入 a到达状态 1,输入 b到达状态 3,状态 3下输入 a还回到状态 3;在状态 1可输入 a或 b,输入 a到达状态 3,输入 b到达状态 2。图 2一 12所示为两个有限自动机 M1和 M2(A是初态、 C是终态 ), 【知识模块】 程序语言 20 【正确答案】 D 【试题解析】 确定有限自动机对每一个可能的输

30、入只有一个状态的转移。非确定有限自动机对每一个可能的输入可以有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。有限自动机 M1在状态 A时,输入 0可以回到状态A,也可以到达状态 B,可见 M1是不确定的。有限自 动机 M2的每个状态下的输入都只有一个转移状态。 【知识模块】 程序语言 21 【正确答案】 D 【试题解析】 后缀式把运算符写在运算对象后面。 “逻辑与运算 ”的优先级高于“逻辑或运算 ”。对于逻辑表达式 “a b c (b x0)”,从运算符的优先级方面考虑,需先对 “a b”求值,然后对 “c (b x0)”求值,最后进行 “ ”运算,因此后缀式为 “rdb cb

31、x0 ”。 【知识模块】 程序语言 22 【正确答案】 B 【试题解析】 闭包运算符 “*”将其运算对象进行若干次连接,因 此 0*表示若干个 0构成的串,而 (10*1)*则表示偶数个 1构成的串。 【知识模块】 程序语言 23 【正确答案】 C 【试题解析】 传值调用最显著的特征是被调用的函数内部对形参的修改不影响实参的值。传值调用的参数传递和被调用函数内对参数的使用主要按下述原则:函数定义时形参被当作局部变量看待,在函数被调用时为形参分配存储单元;调用函数前,首先计算实参的值,调用时将实参的值放入形参的存储单元;被调用函数内部对形参单元中的数据进行直接访问。引用调用是将实参的地址传递给形

32、参,使得形参的地址就是对应实 参的地址。引用调用的参数传递和被调用函数内对参数的使用主要按下述原则处理:函数定义时形参被当作局部变量看待,在函数被调用时为形参分配存储单元;调用 【知识模块】 程序语言 24 【正确答案】 C 【试题解析】 引用就是某一变量 (目标 )的一个别名,对引用的操作与对变量直接操作完全一样。表示该引用名是目标变量名的一个别名。 【知识模块】 程序语言 25 【正确答案】 C 【试题解析】 根据定义可知 Java, C C+, C#都需要进行变量对象声明,所以说是强类型语言。而 Python不需要,它属于弱类型语言。 【知识模块】 程序语言 26 【正确答案】 A 【试

33、题解析】 Python是一种面向对象的解释型程序设计语言,可用于编写独立程序、快速脚本和复杂应用的原型。 Python也是一种脚本语言,它支持对操作系统底层的访问。 Prolog是一种逻辑型语言。 Prolog程序是一系列事实、数据对象或事实间的具体关系和规则的集合。 Prolog有很强的推理功能,适用于书写自动定理证明、专家系统、自然语言理解等问题的程序。 Java是一种面向对象的程序设计语言,能开发应用在 Internet上且具有软、硬件独立性和交互能力的程序。Java可以一次编写而到处运行。 C#是微软公司发布的一种面向对 【知识模块】 程序语言 27 【正确答案】 C 【试题解析】 “

34、xandyornotz”可以表示为 “(xandy)or(notz)”。 x为真时,如果 y为真,则 xandy的结果为真,此时不需要计算 z的值,整个表达式的值为真;如果 y为假,则 xandy的结果为假,此时整个表达式的值由 z决定,如果 z为真,则notz为假,最终结果为假,反则为真。 x为假时,不需要计算 y的值, xandy的结果为假, 整个表达式的值由 z决定。 【知识模块】 程序语言 28 【正确答案】 D 【试题解析】 传值调用是指传递变量值的调用方式。在这种调用方式中,实参使用变量名或者表达式,形参使用变量名。在调用时,调用函数将实参值拷贝到一个副本给形参,即使形参按顺序从对

35、应的实参中获得值,这就相当于将实参值对应地赋给形参,使形参获值。传址调用是指在调用时传递变量地址值的传值调用。传址调用时要求调用函数的实参用地址值,而被调用函数的形参用指针,于是函数之间进行地址值的传递。这种传递是将实参的变量地址值传递给形参指针, 即让形参指针指向实参变量,这种传递方式与调用函数拷贝实参值的副本给形参是不同的,它是让形参指针直接指向 【知识模块】 程序语言 29 【正确答案】 C 【试题解析】 全局变量和静态局部变量在定义时如果没有初始化,编译时会自动初始化为 0;而普通的局部变量,如果没有初始化,则其值是一个随机数。在 C程序表达式中,只要引用的变量定义了,就可以通过编译并

36、运行,但运行结果不一定是期望的结果。 【知识模块】 程序语言 30 【正确答案】 B 【试题解析】 模式串 “abaabaca”的 next函 数值序列如下。当 j=1时, next1=0;当 j=2时, k不存在, next2=1;当 j=3时,不存在满足条件的 k, next3=1;当 j=4时, p1p3=a,存在 k=2,使得 p1p2p k-1=pj-k+1pj-k+2p j-1,故 next14=2;当 j=5时,存在 【知识模块】 程序语言 31 【正确答案】 B 【试题解析】 数据是程序操作的对象,类型说明数据占用的内存和存放形式。数据类型不仅可用于在基础机器中完成对值得布局,

37、还可以用于检查表达式中对运算的应用是否正确 。 【知识模块】 程序语言 32 【正确答案】 D 【试题解析】 对于高级程序设计语言,编译程序会把编写的源程序翻译成与之等价的目标程序。编译程序的工作过程分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。语法分析要在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。可见,要先进行词法分析,然后进行语法分析,故选项 A错误。在语法分析阶段能发现语法错误,但不能发现语义错误,因此选项 B错误。语义分析阶段主要检查源程序是否包含静态语义错误,并收集类型信息 供后面的代码生成阶段使用,可见,语义分析阶段工作与与目

38、标机器的体系结构关联不大, 【知识模块】 程序语言 33 【正确答案】 C 【试题解析】 在传值方式下,是将实参的值传给形参,形参不能向实际参数传递信息;实参可以是表达式或常量,也可以是变量或数组元素。在传地址方式下,是将实参的地址传给形参,实参和形参都指向同一个对象,被调用函数中对形式参数的修改实际上就是对实际参数的修改,可以实现数据的义义向传递。实参必须是变量地址、数组名,不能是表达式或常量。形参就是形式参数,用一个变量来代表,不能是 表达式。 【知识模块】 程序语言 34 【正确答案】 B 【试题解析】 汇编程序的功能是将会变语言所编写的源程序翻译成机器指令程序。汇编语言源程序语句可分为

39、指令语句、伪指令语句和宏指令语句。指令语句汇编后产生相应的机器代码;伪指令语句指示汇编程序在汇编源程序时完成某些操作,汇编后不产生机器代码。 【知识模块】 程序语言 35 【正确答案】 A 【试题解析】 第 l轮循环, 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, i 11,不满足循环条件,循环结束。可以计算 count+语句执行的次数为: 1+2+4+8=15 【知识模块】 程序语言 36 【正确答

40、案】 B 【试题解析】 程序的三种基本控制结构是顺序结构、选择结构和重复结构。 【知识模块】 程序语言 37 【正确答案】 C 【试题解析】 编译程序:也称编译器,将源程序翻译成目标语言程序,然后在计算机上运行目标程序。虽然执行效率高,但 编写出来的程序可读性很差,且难以修改和维护。解释程序:也称解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。 【知识模块】 程序语言 38 【正确答案】 A 【试题解析】 在编译时产生的目标文件都是从地址 0开始的,在连接时将各个目标文件进行符号替换,这时会修改相应的地址,最后产生一个从地址 0开始的可执行文件。在该可执行文件中的

41、地址称为逻辑地址。 【知识模块】 程序语言 【知识模块】 程序语言 39 【正确答案】 B 【知识模块】 程序语言 40 【正确答案】 D 【试题解析】 本题主要考查函数调用时参数的传递方式。如果采用传值方式调用,则形参值的变化不会影响实参;而采用引用方式调用,则形参值的变化直接反映到实参。本题中如果在函数 t中采用传值方式调用函数 f, a的值传给形参 r,在函数 f中, a的值变为 6, r的值为 10并返回赋给变量 x,由于 a是全局变量,退出函数垢 a的值依然为 6,所以函数 t的输出结果为 16。如果函数 t采用传值方式调用函数 f,则形参 r就是对实参 a的引用,对 r的修改就是对

42、 a的修改,在执行 a=r+1时, a和 r的值都变为 6,执行 r=r*2, a和 r的值都变为 12,并将 r的值返回给 【知识模块】 程序语言 【知识模块】 程序语言 41 【正确答案】 A 【知识模块】 程序语言 42 【正确答案】 C 【试题解析】 编译程序的功能是把用高级语言书写的源程序翻译成与之等价的目标程序 (汇编语言或机器语言 )。编译程序的工作过程可以分为 6个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,实际的编译器中可能会将其中的某些阶段结合在一一起进行处理。各个阶段逻辑上可以划分为前端和后端两部分。前端包括 从词法分析到中间代码生成各个阶段的工作,后端包括中间代码优化、目标代码生成与优化等阶段。这样,以中间代码为分水岭,把编译器分成了与机器有关的部分和与机器无关的部分。符号表的作用是记录源程序中各个符号的必要信息, 【知识模块】 程序语言

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

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

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