← 目录51CTO 讲义

程序设计语言基础(第五版)

51CTO 软考题库 · 共 105 题(单选 105 + 问答 0)


1. 某有限自动机的状态转换图如下图所示,该自动机可识别(50)。 图片

答案:B

解析:

这类题目直接带入选项即可,图中 S0 为初态,S2 为终态,A 选项输入 1001 不能到达 终态 S2,而是到达了 S1,所以不对。C 选项,输入 1010 到达 S0,不能到达终态,不对。 D 选项输入 0101 到达 S1,也不能到达终态,所以也不对,只有 B 选项满足条件。

单选题


2. 调用函数时若是引用调用方式,则是将(1)。下面所定义的函数f1为值调用方式,函数f2为引用调用方式。若有表达式x=f1(5),则函数调用执行完成后,该表达式中x获得的值为(2)。 图片

答案:C

解析:

传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。本题中,执行f1函数,x=5,b=x-1=4,调用f2(b),为引用调用,形参x值会引起b的值变化。f2函数运行,x为4,x=2x+1=9,所以b的值为9。接下来f1的返回值是bx=45,所以x=f1(5)=45。

单选题


3. 算术表达式a*(b+c/d)-e的后缀式为()

答案:A

解析(AI 生成):

按优先级等价于a*((b+(c/d)))-e:先c/d得cd/,再b加得bcd/+,再与a相乘得abcd/+*,最后减e。其余选项运算符排列与括号层次不符,如B把乘号排到e之后、C仍是中缀写法,都无法还原原式。

单选题


4. 以编译方式翻译C/C++源程序的过程中,静态检查在()阶段处理。

答案:B

解析:

静态检查的阐述:“编译器必须检查源程序是否符合源语言规定的语法和语义要求。”由此看来,静态检查其实就是语义分析了。

单选题


5. Java语言符合的特征有()和自动的垃圾回收处理。 ① 采用即时编译 ② 采用静态优化编译 ③ 对象在堆空间分配 ④ 对象在栈空间分配

答案:A

解析:

Java是即时编译程序 栈空间:当我们在创建一个变量时,在栈空间中会开辟一个空间来存放变量的类型和变量名。当我们在给基本数据类型赋值时他的值同样也是存放在栈空间中,而在给引用类型赋值时,变量名时存放在栈空间中而数据时存放在堆空间中。 堆空间:当我们创建的变量类型不是基本数据类型而是引用类型的数据时,就要用到堆空间,所以堆空间在java中存放的数据是引用类型的数据比如:数组、字符串、对象。

单选题


6. 表达式a*b-(c+d)的逆波兰式是(21)。

答案:B

解析(AI 生成):

逆波兰式即后缀式,按先乘、后加、再减:(ab)得ab,(c+d)得cd+,两结果相减即abcd+-。选项D写成abcd+-,还原后是a-b*(c+d),与原式不同;A、C的括号与运算次序也不符。

单选题


7. 与正规式(a|b)+等价的表达式是(22)。

答案:B

解析(AI 生成):

正规式中+表示前面的式子重复一次或多次,故(a|b)+等价于至少出现一个a或b、其后可再接任意多个,即(a|b)(a|b)*。A含空串,C把连接写成选择,D要求ab成对出现,三者描述的语言均不同。

单选题


8. 状态转换图如下,其接受的集合是(47)。 图片

答案:D

解析(AI 生成):

该状态转换图每读入一个0状态就翻转一次,读入1时状态保持不变,终态对应翻转了偶数次,因此接受含偶数个0的二进制串。按1的奇偶计数或要求0为奇数的选项,与图中转移方向不一致。

单选题


9. 使用(49)可以定义一个程序的意义。

答案:A

解析:

词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义,选A。

单选题


10. 下图所示的二叉树表示的算术表达式是(20)(其中的*,/,-,表示乘、除、减运算)。 图片

答案:C

解析:

算术表达式采用中序遍历(左、根、右)的方式,遍历的结果是a*(b/c- d) 。

单选题


11. 对高级程序语言进行编译的过程中,使用(21)来记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成。

答案:B

解析:

符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。符号表的建立可以始于词法分析阶段,也可以放到语法分析和语义分析阶段,但符号表的使用有时会延续到目标代码的运行阶段。

单选题


12. 下图所示为一个非确定有限自动机(NFA), S0为初态(S3为终态。该NFA识别的字符串分(22)。 图片

答案:D

解析:

该自动机可以识别的字符串有101、1101、0101、10101、01101,这些字符串的共同特点都是以101结尾。

单选题


13. 以下Python语言的模块中,(50)不支持深度学习模型。

答案:B

解析:

Matplotlib是Python的绘图库,可以绘制直方图、条形图、散点图等图形。

单选题


14. 代码生成阶段的主要任务是(18)。

答案:C

解析:

程序处理过程为:源代码、预处理、编译、优化、汇编、链接、可执行文件。 在代码生成阶段,对于被翻译系统处理的每一C语言源程序,都将最终经过这一处理而得到相应的目标文件,选C。

单选题


15. 后缀ab+cd+/可用表达式(19)来表示。

答案:B

解析(AI 生成):

后缀式还原时自左向右扫描,遇操作数入栈、遇运算符弹出两个操作数运算:ab+得(a+b),cd+得(c+d),最后的/将两者相除,即(a+b)/(c+d)。A、C、D的括号层次与该后缀结构不一致。

单选题


16. 已知NFA如下图,则其表达的正规式是(20)。 图片

答案:A

解析(AI 生成):

该NFA以1开头,中间可经任意多个0或1的自环,末尾经101到达终态,故正规式为1(0|1)101。星号允许中间部分为空,串1101也能被接受;若用+则要求中间至少一个字符,101*101无法表示0、1任意交替。

单选题


17. 下图所示的有限自动机中0是初始状态,3是终止状态,该自动机不可以识别(45)。 图片

答案:A

解析:

本题考查程序语言翻译的基础知识。 有限自动机可识别一个字符串的含义是,从有限自动机的初态出发,存在一条到达终态的路径,其上的标记可构成该字符串。若从初态到终态不存在能构成指定字符串的路径,则称该字符串不能被该自动机识别。 对于“abaa”,其识别路径为状态0→状态2→状态3→状态3。 对于“aaaa”,其识别路径为状态0→状态2→状态1→状态3。 对于“bbba”,其识别路径为状态0→状态1→状态2→状态3。

单选题


18. 常用的中间代码形式不含(18)。

答案:D

解析:

试题分析 1、逆波兰表示 逆波兰表示又称后缀表示法,它是最简单的一种中间代码表示形式,早在编译程序出现之前,它就用于表示算术表达式。 2、四元式 四元式也是一种比较普遍采用的中间代码形式,其形式为:(OP,ARG1,ARG2,RESULT)。其中:OP为运算符,ARG1为第一运算对象,ARG2为第二运算对象,RESULT为运算结果。 3、三元式 三元式表示是与四元式类似的一种表示法,所不同的仅是三元式中没有表示运算结果的部分,凡要涉及到运算结果的均用三元式的位置或序号来代替。。

单选题


19. 状态转换图如下图所示,其可以接受的字符集为(19)。 图片

答案:B

解析:

根据状态转换图可知,自动机从初始状态 X 出发,只有输入字符 1 才能转移到接受状态 Y。在状态 Y 下,输入 1 会保持在 Y,输入 0 会回到 X。因此,要让自动机最终停在接受状态 Y,字符串必须以 1 结尾。该自动机接受的语言是以 1 结尾的、由 0 和 1 组成的任意二进制字符串集合,故选 B。

单选题


20. 中间代码生成时,所依据的是(20)。

答案:C

解析:

当把一个句型的语义分析完毕的时候,如果符合规则,就会生成中间代码或者是目标代码来供机器识别,因此选择C。

单选题


21. 【51CTO学堂-学员回忆版】在运行时将调用和响应调用所需执行的代码加以结合的机制是()

答案:D

解析:

程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为动态绑定。静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程称之为静态绑定。

单选题


22. 【51CTO学堂-学员回忆版】某python程序中定义了X=【1,2】,那么X*2的值为(49)

答案:A

解析:

X=[1,2]表示List结构,*2表示重复2次,运算结果为[1,2,1,2]。

单选题


23. 【51CTO学堂-学员回忆版】在Python语言中,(50)是一种不可变的、有序的序列结构,其中元素可以重复

答案:A

解析(AI 生成):

元组用圆括号定义,创建后不能增删改元素,且按定义顺序存放、允许重复值,符合不可变的有序序列。列表有序但可变,字典是键值映射且按键访问,集合无序且元素不重复。

单选题


24. 设有描述简单算术表达的上下文无关文法如下,其中 id 表示单字母。 E→E+T|T T→FT|F F→id 与使用该文法描述的表达式 a+bc*d 相符的语法树为 (66) 。

答案:A

解析:

本题考查数据结构基础知识。 算数表达式是对二叉树进行中序(中缀)遍历的后得到的结果,中序(中缀)遍历的方式是首先遍历左子树,然后访问根结点,最后遍历右子树。 根据文法T→F*T,二叉树只能是右孩子不断扩展,符合条件的只有A。

单选题


25. 某一确定性有限自动机(DFA)的状态转换图如下图所示,令d=0|1|2|…|19,则以下字符串中,不能被该DFA接受的是(18)。 (1)3857 (2)1.2E+5 (3)-123. (4).576E10 图片

答案:B

解析:

有限自动机也称为有穷状态自动机,是一种数学机器模型,基本形式有非确定有限自动机(NFA)和确定的有限自动机(DFA),并且每一个NFA都有与其等价的DFA。有穷状态自动机的物理模型如下图所示。 图片 一个DFA可以用状态转换图直观的方式。状态转换图是一种有向图。DFA中的每个状态对应转换图中的一个节点,从外部引入弧的节点表示开始节点,双圈节点表示终态;DFA中的每个状态转换对应图中的一条有向弧,若转换关系为/(A,a)=Q,则该有向弧从节点A出发,进入节点Q,字符a是弧上的标记。 有穷状态自动机识别字符串的过程为:初始时,机器处于起始状态(题图中节点0表示初始状态)。读取一个输入符号,并进行相应的状态转移,直到输入串结束或找不到 相应的状态转移时为止。 根据题目终给定的自动机,识别3857、1.2E+5、-123.、.576E10的过程分别如下。 图片

单选题


26. Python输入函数是(43)。

答案:C

解析:

本题考查的是Python函数。input( )是输入函数,print( )是输出函数,选择C

单选题


27. 在Python中,表达式2**3的结果是(44)。

答案:B

解析:

本题主要考查Python基本运算符,是幂运算,xy为返回为x的y次幂,选择B

单选题


28. 下图所示为一个有限自动机(其中,A是初态、C是终态),该自动机可识别(45)。 图片

答案:C

解析:

从有限自动机的初态到终态的路径上的标记形成其可识别的字符串。 对于题中的自动机,0000的识别路径为A→B→B→B→B,不能到达终态C,所以0000不能被该自动机识别;1111的识别路径为A→A→A→A→A,不能到达终态C,所以1111也不能被该自动机识别;1010的识别路径为A→A→B→C→B,结束状态不是终态C,所以1010不能被该自动机识别;0101的识别路径为A→B→C→B→C,存在从初态到终态的识别路径,所以0101可以被该自动机识别。

单选题


29. 编译和解释是实现高级程序设计语言翻译的两种基本形式。以下关于编译与解释的叙述中,正确的是(20)。

答案:C

解析:

在编译方式下,先将源程序翻译为等价的目标程序,源程序的翻译和目标程序的运行是完全独立的两个阶段;而解释方式下,对源程序的翻译和运行是结合在一起进行的,并不生成目标代码。编译过程基本上可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等几个阶段,其中,中间代码生成和代码优化不是必须的。在词法、语法、语义分析方面,编译方式和解释方式没有区别,因此选择C。

单选题


30. 函数(过程)调用时,常采用传值与传地址两种方式在实参与形参间传递信息。以下叙述中,正确的是(21)。

答案:D

解析:

函数调用时基本的参数传递方式有传值与传地址两种。传值调用是将实参的值传给被调用函数的形参,因此实参可以是常量、变量、表达式或函数调用;传地址调用(或引用调用)的实质是将实参的地址传给被调用函数的形参,因此实参必须具有地址,因此选择D。

单选题


31. 在Python中,设a=2,b=3,表达式a=3的值是(61)。

答案:C

解析(AI 生成):

先算关系运算:2=3也为True,and两侧同为真,结果为True。Python的关系与逻辑运算返回布尔值True/False,不会返回整数1或0,故A、B不选。

单选题


32. 48、【51CTO学堂-学员回忆版】Python 中采用(48)方法来获得一个对象的类型。

答案:B

解析(AI 生成):

type(obj)返回该对象所属的类型对象,是最直接的取类型方法。str()把对象转成字符串表示,id()返回对象在内存中的标识地址,object()用于创建所有类的基类实例,三者都不能取得对象类型。

单选题


33. 49、【51CTO学堂-学员回忆版】在 Python 语言中,语句x=(49)不能定义一个元组

答案:D

解析:

(1)获得的是一个int数值而不是元组,若要获得一个单元素的元组,应该是(1,)

单选题


34. 50、【51CTO学堂-学员回忆版】关于 Python 语言的叙述中,不正确的是(50)

答案:C

解析:

Python不支持switch的使用,所以本题C选项描述错误,其他说法都是正确的。

单选题


35. 22、【51CTO学堂-学员回忆版】设函数foo和hoo的定义如下图所示,在函数foo中调用函数hoo,hoo的第一个参数采用传引用方式.(call by reference),第二个参数传值方式(call by value),那么函数foo中的print(a,b)将输出(22) 图片 图片

答案:B

解析:

在函数foo中,初始时a = 8,b = 5。然后调用hoo(a, b)。 对于hoo函数,第一个参数x是传引用方式,第二个参数m是传值方式。 当调用hoo(a, b)时,a的引用传给x,b的值传给m,此时x = 8,m = 5。 在hoo函数中,执行m = x * m,则m = 8 * 5 = 40;接着执行x = m - 1,则x = 40 - 1 = 39。 由于x是传引用,所以foo函数中的a会随着x的改变而改变,变为39;而b是传值,foo函数中的b值保持不变,仍为5。 最后在foo函数中执行Print(a, b),输出的是39和5。

单选题


36. 算数表达式b*(a+c)-d的后缀式是( )(+、-、*表示算术的加、减、乘运算,运算符的优先级和结合性遵循惯例)。

答案:D

解析(AI 生成):

先算括号内a+c得ac+,再与b相乘得bac+*,最后减d,故后缀式为bac+d-。A、B把括号内加法的位置写错,C把ba提前计算,均未按括号与优先级顺序生成后缀式。

单选题


37. 关于Python,下列说法正确的是( )

答案:B

解析:

A选项:在try...except...finally..异常捕获语句中,无论try中代码是否异常,是否被except捕获,finally子句中的代码总是会被执行的。 C选项:except Exception会捕获所有Exception及其子类的异常,但不是所有类型的异常,因为Exception并不是所有异常的基类。实际上,BaseException是所有异常的基类,所以需要捕获所有异常,可以使用BaseException。 D选项:Python中没有内置的switch...case语句。

单选题


38. 正规集(ab|c)(1|2|3),可以识别的字符种类有(1)个,下列(2)可被匹配。

答案:D

解析(AI 生成):

该正规集的字符分别取自{a,b,c}与{1,2,3},并集共6种字符;(ab|c)与(1|2|3)各有3种取法,可组合出9个串,但问的是字符种类数,故为6。选3只数了单侧,选2、1更不符。

完形类单选题


39. 正规集(ab|c)(1|2|3),可以识别的字符种类有(1)个,下列(2)可被匹配。

答案:A

解析(AI 生成):

串须由(ab|c)与(1|2|3)两段连接而成:ab2第一段取ab、第二段取2,可被匹配。abc第二段不是1/2/3,a2第一段缺b,123第一段只能取c、后面还剩23,均无法完整匹配。

完形类单选题


40. 已知NFA如下图,则其表达的正规式是( )。 图片

答案:A

解析:

由NFA可知,离开初态的字符只有1,因此该NFA能识别正规式由1开头,进入终态的字符也只有101,则结尾为101,中间部分可以是0和1的各种组合,用(0|1)*表示,所以该NFA能识别的正规式就是1(0|1)*101。答案选A。

单选题


41. 编译和解释是实现高级语言翻译的两种基本方式,相对应的程序分别称为编译器和解释器。与编译器相比,解释器 ( ) 。

答案:B

解析:

在实现程序语言的编译和解释两种方式中,编译方式下会生成用户源程序的目标代码,而解释方式下则不产生目标代码。目标代码经链接后产生可执行代码,可执行代码可独立加载运行,与源程序和编译程序都不再相关。而在解释方式下,在解释器的控制下执行源程序或其中间代码,因此相对而言,用户程序执行的速度更慢。

单选题


42. 把数式a+b/2a写成Python语言的表达式,下列书写正确的是( )

答案:D

解析(AI 生成):

数学式中分母是2a,须整体作除数,应写成a+b/(2*a)。C中除与乘同级、自左向右结合,实际算的是(a+b/2)*a,语义已改变;A、B是后缀式写法,不能作为Python表达式。

单选题


43. 以下选项中,不是Python中文件操作的相关函数是( )。

答案:C

解析:

Python中的文件操作相关函数包括open()、read()、write(),没有load()函数。

单选题


44. 字典是Python语言中的一个复合数据类型,现定义字典dict1如下,则不正确的语句为()。dict1={name':'David','age'.10,'class':'first}

答案:B

解析:

本题考查Python基础知识。 在Python字典中,键是唯一的标识符,并且通常是不可变的(如字符串、数字等)。这里的1不是一个有效的键因为dict1的键是'name'、'age'和'class'。尝试使用1作为键来删除键值对会导致KeyError。本题选择B选项。

单选题


45. 在C/C++程序中,若函数fun无返回值、无参数,对该函数的正确声明是()。

答案:D

解析:

本题考查函数调用相关知识。 一个函数fun没有返回值(即返回类型为void)并且不接受任何参数,正确的声明方式应该明确指出返回类型和参数列表(或无参数),本题选择D选项。

单选题


46. 对高级语言源程序进行编译的过程可以分为多个阶段,分配寄存器的工作在 ( ) 阶段进行。

答案:D

解析:

目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。

单选题


47. 在以阶段划分的编译器中,语义分析阶段的任务包括()。 ①识别记号 ②识别句子结构 ③检查程序中的语法错误④填写符号表 ⑤生成中间代码

答案:D

解析:

语义分析阶段任务:语义分析主要负责检查源程序的语义正确性,包括类型检查、符号表管理等。 选项④:填写符号表是语义分析阶段的重要任务,用于记录程序中各种标识符的信息。 选项⑤:生成中间代码也是语义分析阶段的任务,将源程序转换为中间表示形式,便于后续的代码生成和优化。 选项①:识别记号是词法分析阶段的任务。 选项②:识别句子结构是语法分析阶段的任务。 选项③:检查程序中的语法错误是语法分析阶段的主要任务。

单选题


48. 在Python语言中,语句x=()不能定义一个元组

答案:D

解析:

在Python中: 选项A:(1,2,1,2)使用圆括号且元素间用逗号分隔,能定义一个元组。 选项B:省略括号的元组定义。 选项C:tuple()是内置函数,可创建空元组,能定义元组。 选项D:(1)不是元组,一个元素的元组应是(1,)。 本题选D

单选题


49. 对布尔表达式“a or ((cb<c) and d)"求值时,()时可进行短路计算。

答案:A

解析:

在逻辑或表达式中,当“a”为“true”时,依据逻辑或的短路特性,无需计算((cb<c) and d)

单选题


50. 在Python3,()不是合法的异常处理结构。

答案:C

解析:

Python的异常处理结构包括: try...except...:try块放可能引发异常的代码,except块捕获并处理异常,是常见的异常处理结构。 try...except...finally:finally块中的代码无论是否发生异常都会执行,常用来释放资源等,扩展了try...except的功能。 raise语句:用于主动引发异常,是Python异常处理机制的一部分。 不合法的结构:try...catch...,因为Python中异常处理用try...except,catch是C++、Java等语言的关键字。 本题选C。

单选题


51. 页面的标记中( )用于表示网页代码的起始和终止。

答案:A

解析:

HTML文档由标签限定起止,其中包含头部标签和主体标签。

单选题


52. 编译过程中,对高级语言程序语名的翻译主要考虑声明语名和可执行语句。对声明语句,主要是将所需要的信息正确地填入合理组织的( )中;对可执行语句,则是(作答此空)。

答案:C

解析:

本题考查编译器工作过程相关知识。 对声明语句的处理: 主要是将所需要的信息正确地填入合理组织的符号表中。 符号表是一种用于记录源程序中各个符号(如变量名、函数名等)的必要信息的数据结构。这些信息包括符号名、类型、作用域等,以辅助语义的正确性检查和代码生成。在编译过程中,符号表需要支持快速有效的查找、插入、修改和删除等操作。 对可执行语句的处理: 对于可执行语句,编译器会将其翻译成中间代码或目标代码。 中间代码是一种在源代码和目标代码之间的表示形式,它可以使程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。目标代码则是可以直接被计算机执行的机器语言代码。 综上,本题答案选择C。

单选题


53. 编译过程中,对高级语言程序语名的翻译主要考虑声明语名和可执行语句。对声明语句,主要是将所需要的信息正确地填入合理组织的(作答此空)中;对可执行语句,则是( )。

答案:A

解析:

本题考查编译器工作过程相关知识。 对声明语句的处理: 主要是将所需要的信息正确地填入合理组织的符号表中。 符号表是一种用于记录源程序中各个符号(如变量名、函数名等)的必要信息的数据结构。这些信息包括符号名、类型、作用域等,以辅助语义的正确性检查和代码生成。在编译过程中,符号表需要支持快速有效的查找、插入、修改和删除等操作。 对可执行语句的处理: 对于可执行语句,编译器会将其翻译成中间代码或目标代码。 中间代码是一种在源代码和目标代码之间的表示形式,它可以使程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。目标代码则是可以直接被计算机执行的机器语言代码。 综上,本题答案选择A。

单选题


54. 下面C程序段中count++语句执行的次数为( )。 for(int i=1;i<=11;i*=2) for(int j=1;j<=i;j++) count++;

答案:A

解析:

本题中给出的是一个双重循环结构,循环体就是count++。第一层循环的循环次数为4次,分别为i=1,2,4,8的情况。而当i=1时,第二层循环循环1次;当i=2时,第二层循环2次;当i=4时,第二层循环4次;当i=8时,第二层循环8次。那么可知循环体一共执行了1+2+4+8=15次。本题选A。

单选题


55. 对高级语言源程序进行编译的过程中,有穷自动机(NFA或DFA)是进行( )的适当工具。

答案:A

解析:

编译程序的功能是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(汇编语言或机器语言)的翻译过程。工作过程分为6个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。 各个阶段逻辑上可以分为前端和后端。前端主要负责解析输入的源代码,由语法分析器和语意分析器协同工作。语法分析器负责把源代码中的‘单词’找出来,语意分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式、语句、函数等等。前端还负责语义的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树,这样后端可以在此基础上进一步优化处理。 后端编译器后端主要负责分析,优化中间代码以及生成机器代码。 有限自动机是进行词法分析的工具。本题选A。

单选题


56. 以下关于高级语言程序的编译和解释的叙述中,正确的是( )。

答案:C

解析:

本题考查语言处理基础知识。   编译和解释是语言处理的两种基本方式。编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,以及符号表管理与出错处理模块。   解释过程在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。   这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源码程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。本题选C。

单选题


57. 高级语言源程序的编译过程分若干个阶段,分配寄存器属于()阶段的工作。

答案:D

解析:

本题考查程序语言翻译基础知识。   编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。编译程序的工作过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段,以及出错处理和符号表管理。其中,中间代码生成和代码优化阶段不是必需的。目标代码生成时才考虑与具体机器相关的处理,寄存器分配处于代码生成阶段的工作。本题选D。

单选题


58. 在C++语言中,若类C中定义了一个方法int f(int a,int b),那么方法()不能与该方法同时存在于类C中。

答案:A

解析:

本题考查的是面向对象程序设计中的函数名重载机制。 在C++中允许在同一个作用域中的同一个函数名字对应着多个不同的函数实现,这种现象称为重载(overloading ),这些函数被称为重载函数。每一个重载函数必须具有不同的函数签名,即函数参数的个数不同或者参数的类型不同。 根据上述概念来解答试题(33)。在C++中有一类特殊的作用域:类作用域。类中所有的成员都具有类作用域。如果在类C的作用域中存在不止一个名字为f的方法,那么这些方法或者具有不同的参数个数,或者具有不同的参数类型。 将4个备选答案依次与题干中给出的方法作比较,可以发现选项A给出的方法的名字、参数个数及参数类型都与题干中给出的方法相同,这就违背了函数名重载的原则,因此该方法不可能与题干中给出的方法共存于类C中。因此正确答案为A。

单选题


59. 已知3个类O、P和Q,类O中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类,类Q为类P的派生类,它们的继承方式如下所示: class P: public O {…}; class Q: private P {…}; 在关于类P的描述中正确的是( );在关于类Q的描述中正确的是( )。

答案:B

解析:

继承机制是面向对象技术提供的另一种解决软件复用问题的途径,即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义。

在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。

· 基类中成员在派生类中的访问权限

¨ public继承方式:不改变基类中成员的访问权限。

¨ private继承方式:派生类所继承的基类成员的访问权限都改为private。

¨ protected继承方式:基类中private成员的访问权限不变,其余的都改为protected。

· 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)

¨ 基类的private成员,只有基类的成员函数可以访问,派生类不能访问。

¨ 通过private方式继承的基类成员(非private成员),只有派生类的成员函数可以访问,外界以及派生类的派生类都不能访问。

¨ 通过protected方式继承的基类成员(非private成员),只有派生类以及该派生类的子类(非private方式产生的)可以访问,外界不能访问。

(43)、(44)考查的是外界(P的对象和Q的对象)对派生类中继承的基类成员的访问权限。解答此题的关键在于确定基类中成员在派生类中的访问权限,尤其是类Q,它是经过两次继承得到的,Q的直接基类是P,而P又是由O派生而来的。

先分析空(43)。首先应注意到类O中有一个私有方法F1。类的私有成员只有在本类中才能访问,因此凡是出现“可以访问F1”的选项都是错误的,这样选项A、C就可以排除了。其次,P是采用public继承方式从O派生而来,那么类O中的所有公有成员都是P的公有成员,在程序中的任何地方都可以访问一个类的公有成员。因此只有选项B是正确的。 空(44)可以在空(43)的基础上进行。通过继承,F1、F2、F3都成为类Q的成员。由空(43)已经得到:F1不可以被外界访问,因此凡是出现“可以访问F1”的选项都是错误的,这样A就被排除了。由于Q采用的是private继承方式,P中的成员都成为Q的private成员,即F2、F3都是Q的private成员。私有成员只有本类可以访问,所以Q的对象不能访问F2和F3,只有Q的成员才能访问它们。因此选项C是正确答案。

单选题


60. 表达式“(a+b)* (c-d)”的后缀表示为()。

答案:A

解析:

本题考查程序语言处理基础知识。 表达式的后缀表示是指将运算符号写在运算对象的后面,表达式中的运算符号按照计算次序书写。 对于表达式“(a+b)* (c-d)” ,先计算a与b的和,再计算c与d之差,然后进行相乘,因此其后缀式为“ab+cd-*”。本题选A。

单选题


61. 设某语言的语法规则用上下文无关文法G=(N,T,P,S)表示,其中N是非终结符号的集合,T是终结符号的集合,P是产生式集合,S是开始符号,令V=NUT,那么符合该语言的句子是( )。

答案:A

解析:

本题考査程序语言方面的基础知识。 一个文法的语言是该文法能产生的句子的集合。一个文法产生的句子是从文法开始符号出发推导出的所有终结符号串。本题选A。

单选题


62. 标记语言用一系列约定好的标记来对电子文档进行标记,以实现对电子文档的语义、结构及格式的定义。( )不是标记语言。

答案:D

解析:

本题考查程序语言基础知识。   HTML (Hypertext Marked Language超文本标记语言),用于互联网的信息表示。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX Windows等)。HTML文档是纯文本文档,可以使用记事本、写字板等编辑工具来编写HTML文件,其文件(文档)的扩展名是.html或.htm,它们需要通过WWW浏览器进行解释并显示出效果。   XML(Extensible Markup Language可扩展的标记语言)1.0标准于1998年2月10日发布,被认为是继HTML和Java编程语言之后的又一个里程碑式的Internet技术。XML丰富了HTML的描述功能,可以描述非常复杂的Web页面,如复杂的数字表达式、化学方程式等。XML的特点是结构化、自描述、可扩展和浏览器自适应等。   用于WAP的标记语言就是WML (Wireless Markup Language),其语法跟XML一样,是XML的子集。   PHP(Hypertext Preprocessor)是一种在服务器端执行的、嵌入HTML文档的脚本语言,其语言风格类似于C语言,被网站编程人员广泛运用。本题选D。

单选题


63. 某程序设计语言规定在源程序中的数据都必须具有类型,然而,( )并不是做出此规定的理由。

答案:B

解析:

要求源程序中的数据必须具有类型的目的主要有以下几个方面: 第一是方便为数据合理分配存储单元;第二是规定了数据类型,就知道了其占用的字节数,从而也就规定了数据对象的取值范围及能够进行的运算;第三是对参与表达式求值的数据对象可以进行合法性检查,比如浮点数就不能进行自加操作。本题选B。

单选题


64. 弱类型的语言(动态类型语言)是指不需要进行变量/对象类型声明的语言。( )属于弱类型语言。

答案:C

解析:

强、弱类型语言有两种划分方法。 一种是从内存上来说:允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。 另一种是从语法上来说:在变量或者对象使用前,需要声明类型的语言就是强类型语言。 根据题意对弱语言的定义:不需要进行变量/对象类型声明的语言,可知本题是从语法的角度来区分强弱类型语言。java、c/c++、c#中变量在使用前都需要声明其类型,而python则不需要。因此从语法上来说,python是弱类型语言。本题选C。

单选题


65. 在对程序语言进行翻译的过程中,常采用一些与之等价的中间代码表示形式。常用的中间代码表示不包括( )。

答案:D

解析:

高级程序语言编写的程序要想在计算机上执行,就需要翻译,常见的翻译方式有编译和解释两种。在编译的方式下,经常用一些与之等价的中间代码表示形式,而常用的中间代码有树、后缀式、四元式。本题选D。

单选题


66. 以下关于类和对象的叙述中,错误的是( )。

答案:B

解析:

本题考查面向对象中类和对象的基本概念。   面向对象中,类是对象的模板,描述了一组对象共有的成员属性和方法。类是一组对象的抽象描述,通过类可以产生一个或多个对象,这些对象具有相同的属性和方法。本题选B。

单选题


67. 在Python3中,表达式list(range ( ) 【10:0:-2】 的值为( )。

答案:B

解析:

在Python3中,range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型;list()函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。因此list(range(11))返回的列表内容为[0,1,2,3...10]。[10:0:-2]表示对该列表截取子列表,从下标10开始,至下标0截止(不包括),每次步长为-2(负数指从后向前)。因此表达式list(range(11))[10:0:-2]的值为[10,8,6,4,2]。本题选B。

单选题


68. 以下关于语言L={anbn|n>=1}的叙述中,正确的是( )。

答案:D

解析:

无法用正规式描述:正规式(正则表达式)只能处理有限状态自动机可识别的语言,而L的嵌套结构需要无限状态记忆,无法用正规式表示。 有限自动机无法识别:有限自动机无法同时跟踪a和b的数量,因此无法直接识别L。 因此既不能用正规式表示,也不能通过有限自动机识别,本题选D。

单选题


69. 传值与传地址是函数调用时常采用的信息传递方式,( )。

答案:C

解析:

在函数调用时,系统为形参准备空间,并把实参的值赋值到形参空间中,在调用结束后,形参空间将被释放,而实参的值保持不变,这就是传值传递方式。传值传递方式中实参与形参之间的数据传递是单向的,只能由实参传递给形参,因而即使形参的值在函数执行过程中发生了变化,也不会影响到实参值。在C语言中,当参数类型是非指针类型和非数组类型时,均采用传值方式。 传地址方式把实参的地址赋值给形参,这样形参就可以根据地址值访问和更改实参的内容,从而实现双向传递。当参数类型是指针类型或数组类型时,均采用传地址方式。 区别于参数传值方式和返回值传递方式,传地址方式具有以下明显的优势。 (1)参数传值方式是主调函数与被调函数之间的单向数据传递方式,而参数的传地址方式则实现了二者之间的双向数据传递。 (2)函数的返回值每次只能把一个数据项从被调函数传递到主调函数,而参数的传地址方式却可一次性地传递多个数据项到主调函数。

单选题


70. 下列关于一个类的静态成员的描述中,不正确的是()。

答案:D

解析:

本题考查的是面向对象程序设计中的静态成员。在C十十中使用静态成员来解决同一个类的不同对象之间的数据共享问题。 静态成员作为类的一种成员,它被类的所有对象共享,而不是属于某个对象的。静态成员分为静态成员变量和静态方法。 静态成员变量的值可以被更新。只要对静态成员变量的值更新一次,所有对象的该静态成员变量的值都会被更新。本题选D。 静态成员函数可以直接访问静态成员,但不能直接访问非静态成员。

单选题


71. 以下关于可视化程序设计的叙述中,错误的是( )。

答案:A

解析:

可视化程序设计主要是让程序设计入员利用软件本身所提供的各种控件,像搭积木式地构造应用程序的各种界面。可视化程序设计最大的优点是设计入员可以不用编写或只需编写很少的程序代码,就能完成应用程序的设计,这样就能极大地提高设计入员的工作效率。在可视化程序设计中,可随时查看程序的运行效果。

单选题


72. 重置的基本思想是通过( )机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。

答案:D

解析:

重置(overriding)的基本思想是,通过一种动态绑定机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。 在面向对象程序设计语言中,重置机制由相应的语法供开发人员选择使用。在C++语言中,通过虚拟函数(virtual function)的定义来进行重置的声明,通过虚拟函数跳转表(virtual functions jump tables,vtbl)结构来实现重置方法体的动态绑定。在Java语言中,通过抽象方法(abstract method)来进行重置的声明,通过方法查找(method lookup)实现重置方法体的动态绑定。本题选D。

单选题


73. 表达式(a-b)*(c+5)的后缀式是()。

答案:D

解析:

本题考查程序语言处理基础知识。 表达式的后缀表示是指将运算符号写在运算对象的后面,表达式中的运算符号按照计算次序书写。 对于表达式(a-b)* (c+5),先计算a与b的差和,再计算c与5之和,最后进行相乘,因此其后缀式为ab-c5+*。本题选D。

单选题


74. 下面关于编程语言的各种说法中,()是正确的。

答案:B

解析:

本题考查程序语言特点。 函数是一种对应规则(映射),它使定义域中每个元素和值域中唯一的元素相对应。函数式语言是一类以λ演算为基础的语言,其代表为LISP,主要用于人工智能领域。 逻辑型语言是一类以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论荃础上的PROLOG。 PROLOG有很强的推理功能,适用于书写自动定理证明、专家系统和自然语言理解等问题的程序。本题选B。

单选题


75. 给定文法 G[S]及其非终结符 A,FIRST(A)定义为:从 A 出发能推导出的终结符号的集合(S 是文法的起始符号,为非终结符)。对于文法 G[S]: S→[L] | a L→L, S| S 其中,G[S]包含的四个终结符号分别为: a,[] 则 FIRST(S)的成员包括( )。

答案:B

解析:

本题考查程序语言基础知识。

程序语言的语法可由上下文无关文法表示,合法的程序可看作是由该文法推导得到。

对于文法G[S],从S出发推导出[a,a]和a的过程可表示为:

S→[L]→[L,S]→[S,S]→[a,S]→[a,a]

S→a

从S出发可推导出以a或[开始的符号串,因此FIRST(S)的成员包括a、[。本题选B。

单选题


76. 正则表达式1*(0|01)*表示的集合元素的特点是( )。

答案:D

解析:

正规式(0|01)*描述的集合为{。,0, 01, 00,000, 001,010,0000,0101, 0100, 0001,……},串中出现01时,其后只能跟0而不能出现1,因此1 *(0|01)*表示的集合元素的特点是串中不包含子串011。本题选D。

单选题


77. 下面的C程序代码段在运行中会出现( )错误。 int i=0; while (i<10); { i=i+1;}

答案:D

解析:

本题考查程序错误的基本知识。

一般程序中的错误可分为语法错误和语义错误(或逻辑错误),语法错误是语句形式上的错误,语义错误是含义上的错误(逻辑错误)。在C程序代码中,

int i=0

while(i<10);

{i=i+1;}

由于在while的循环条件表达式后加了分号“:”,使循环体为空语句,因此造成死循环,这是一种运行中出现的逻辑错误,属于动态语义错误。本题选D。

单选题


78. 程序语言的大多数语法现象可用上下文无关文法描述。对于一个上下文无关文法G=(N,T,P,S),其中N是非终结符号的集合,T是终结符号的集合,P是产生式集合,S是开始符号。令集合V= N∪T,那么G所描述的语言是( )的集合。

答案:B

解析:

本题考查程序语言的基础知识。   一个文法定义的语言是终结符号串的集合,这些终结符号串应能从文法的起始符号出发推导出来。本题选B。

单选题


79. 在关于类的实例化的描述中,正确的是( )。

答案:C

解析:

‌A‌:错误。静态数据成员属于类本身,同一个类的所有对象共享同一份静态数据成员值,修改一个对象的静态成员会影响所有对象‌。 ‌B‌:错误。不同类的对象拥有各自独立的静态数据成员,除非它们属于同一个类,否则静态成员值互不影响。 ‌C‌:正确。this 是对象自身的引用,每个对象都有自己唯一的 this 值,用于标识当前对象。 ‌D‌:错误。this 值因对象实例不同而不同,同一类的不同对象 this 值不同。

单选题


80. 程序设计语言引入“类”的概念是为了解决数据保护问题。C++语言将类的成员封装在类体之中,使之具有一定的存取规则,这些规则规定了存取类的成员的权利,其中,对于用private说明的成员,它( )。

答案:B

解析:

用private说明的成员只能被该类的成员函数访问,外界不能直接访问 ,本题选B。

单选题


81. 程序设计语言提供了基本类型及其相关的操作,而( ) 则允许开发者自定义一种新的类型及其相关的操作。

答案:C

解析(AI 生成):

类是对数据和操作的抽象描述,用它可以定义新的类型并规定该类型支持的操作,再由类创建对象。对象是类的实例,引用只是指向对象的访问方式,二者都不能定义新类型。

单选题


82. 设某程序中定义了全局整型变量x和r,且函数f()的定义如下所示,则在语句“x = rr +1 ;”中 ( ) 。 int f(int r) {int x; x = rr +1 ; return x; }

答案:C

解析:

本题考查程序语言的基础知识, 在函数F的形式参数表中声明了r。且在函数中定义了变量小x,因此语言规定语句x=r*r+1;中应用的x和r都是函数中定义的局部变量。

单选题


83. 某python程序中定义了X=[1,2],那么X*2的值为( )

答案:A

解析:

X=[1,2]表示List结构,*2表示重复2次,运算结果为[1,2,1,2]。本题选A。

单选题


84. 在过程式程序设计(①)、数据抽象程序设计(②)、面向对象程序设计(③)、泛型(通用)程序设计(④)中,C++ 语言支持 (作答此空) ,C语言支持 ( ) 。

答案:A

解析:

本题提到的4种程序设计范型是比较流行的,且分别被多种程序设计语言所支持,景点的C语言目前仅支持过程式程序设计范型,这是一种基于任务分解的、自上而下的程序设计方法。数据抽象程序设计范型允许将问题和解空间中的事物、概念等采用类机制来表示。面向对象程序设计范型比数据抽象更进一步,支持继承、多态等,更加符合客观世界的规律。范型程序设计即设计出通用算法、通用类型,并使它们应用于多种数据类型。

C++语言以C语言为基础,增加了后三种程序设计范型的支持,它是目前使用广泛的程序设计语言之一。

单选题


85. 设某上下文无关文法如下:S→11 | 1001 | S0 |SS,则该文法所产生的所有二进制字符串都具有的特点是()。

答案:A

解析:

本题考查程序语言基础知识。   推导就是从文法的开始符号S出发,反复使用产生式,将产生式左部的非终结符替换为右部的文法符号序列〔展开产生式用功表示),直到产生一个终结符的序列时为止.从文法G的开始符号出发,能推导出的终结符号序列(句子)的全体称为文法G产生的语言。   对于上下文无关文法S→11 | 1001|S0|SS,从S出发可推导出11,1001, 110, 1111,11110和10010等,将这些二进制序列转换成对应的十进制数可知,它们都能被3整除。本题选A。

单选题


86. 系统调用函数和普通函数调用的区别体现在( )。

答案:B

解析:

系统调用函数运行在内核态。系统调用是用户程序请求操作系统内核提供服务的接口,需通过软中断触发特权级切换,从用户态进入内核态执行。普通函数调用运行在用户态。普通函数由用户程序或库函数实现,全程在用户态执行,无需特权级切换。

单选题


87. 在程序语言基础中,关于解释执行方式的特点,以下说法正确的是( )。

答案:C

解析:

解释执行方式是指程序运行时逐条翻译并执行源代码,每次执行都需要进行翻译过程,无法像编译方式那样一次性生成高效的机器码,因此执行效率通常较低。其他选项:A错误,解释执行效率通常较低;B错误,解释执行需要源代码或中间代码;D错误,解释执行不生成独立的目标代码,需要解释器参与运行。

单选题


88. 在程序设计中,下列错误中属于动态语义错误的是( )。

答案:B

解析:

动态语义错误是指程序在运行过程中才能被检测到的错误,如除数为零、数组越界、空指针访问等。 选项A和D属于静态语义错误; 选项C属于语法错误; 只有B项“除数为零的错误”需要在运行时才能触发,因此属于动态语义错误。

单选题


89. 在编译过程中,用于连接源程序中标识符的声明与其引用的关键数据结构是( )。

答案:A

解析:

符号表是编译过程中维护的关键数据结构,它记录了程序中所有标识符(如变量名、函数名)的属性信息(如类型、作用域、存储地址等)。 当编译器处理到一个标识符的引用时,正是通过查询符号表来找到其对应的声明信息,从而完成语义检查和后续的代码生成,因此它是连接声明与引用的桥梁。 选项B反映了源代码的语法层次结构,但不直接负责管理标识符的声明与引用关系。 选项C是源代码与目标代码之间的一种过渡表示,与标识符的声明引用连接无直接关联。 选项D主要负责改进中间代码的效率,并非用于建立声明与引用的连接。

单选题


90. 下列选项中,能成功创建一个Python字典的是( )。

答案:A

解析:

Python 字典是由键值对组成的集合,创建字典的标准语法是使用花括号 {},并用冒号 : 分隔键和值,键值对之间用逗号 , 分隔。 选项A完全符合字典的语法规范。 选项B键值对之间缺少必要的冒号 :。 选项C使用了圆括号 (),在 Python 中是创建元组而非字典的语法。 选项D是一个包含列表的列表,可以通过 dict() 函数转换 dict([['a', 1], ['b', 2]]) 来创建字典,但其本身并非一个字典直接量。

单选题


91. 以下关于渐进符号的表示中,不正确的是( )。

答案:C

解析:

渐进符号中,Θ表示紧界(同时是上界和下界),O表示上界(存在常数C和n₀,当n≥n₀时,f(n)≤C·g(n))。 选项A:n²与n²是同阶增长,满足Θ的定义,正确。 选项B:n²本身是自己的上界,取这C=1、n₀=1即可满足O的定义,正确。 选项C:n²的增长速度远快于n,不存在常数C和n₀使得n²≤C·n对所有n≥n₀成立,错误。 选项D:n³是n²的上界,取这C=1、n₀=1时n²≤n³成立,正确。 因此不正确的是选项C。

单选题


92. 编译器语义分析阶段采用语法制导翻译方法,处理包含变量的表达式的主要目标是( )。

答案:C

解析:

语义分析处理含变量表达式时,核心工作是类型检查,如确认int不能赋给float、数组下标必须是整数等,同时查符号表确认变量已声明。

单选题


93. 语法树的主要功能是( )。

答案:B

解析:

语法树就是用来展示程序的语法层次结构。如表达式:a + b * c,它的语法树如下所示: 图片 最顶层是 +,说明整个表达式是一个加法

单选题


94. 执行如下python代码的结果是什么( )。 a = [1, 2, 3, 4, 5] a[1:4] = [] print(a)

答案:D

解析:

a[1:4] 切片取的是索引 1、2、3(左闭右开,不含索引4),即元素 [2, 3, 4],将其赋值为空列表 [] 相当于删除这三个元素,原列表 [1, 2, 3, 4, 5] 删除后只剩下索引0的 1 和索引4的 5,所以最终结果是 [1, 5],选 D。

单选题


95. 以下python代码输出什么( )。 a = [1, 2, 3] b = [1, 2, 3] print(a == b, a is b)

答案:B

解析:

== 运算符:比较两个对象的值是否相等,即判断对象所包含的数据内容是否相同。对于可变对象(如列表、字典),比较的是其元素内容是否一致。 is 运算符:比较两个对象的身份是否相同,即判断两个变量是否引用内存中的同一个对象,本质上是比较对象的内存地址(id)是否一致。

单选题


96. 算术表达式“(a+b)*(c-d)”的后缀式是( )。

答案:A

解析:

后缀式是波兰逻辑学家卢卡西维奇发明的一种表达方式,把运算符号写在运算对象的后面,例如把a+b写成ab+,这种表示法的优点是根据运算对象和算符的出现次序进行计算,不需要使用括号。

单选题


97. 将E-R模型中的一对多联系转换为关系模型时,正确的转换方式是( )。

答案:C

解析:

关系数据库设计原则: 1:N联系:将联系并入“N”端(多端),在N端关系中添加“1”端的主键作为外键,并将联系的属性也放入N端。例如“部门(1)— 员工(N)”,在员工表中加“部门号”外键。 只有在M:N联系时才需独立生成关系表。 B/加错了方向或随意合并会破坏范式。

单选题


98. 在C++中,若函数定义为 void swap(int a, int b),则调用 swap(x, y) 后,主调函数的x和y的值( )。

答案:B

解析:

C++默认按值传递,形参为实参副本,交换副本不影响原变量。若需交换需使用引用(int &a, int &b)或指针。选项C错误,绝对不可能交换。选项D错误,语法正确。

单选题


99. 编译程序进行语义分析时,需要检查的内容不包括( )。

答案:C

解析:

括号匹配属于语法分析阶段的任务,由上下文无关文法检查。选项A、B、D均为语义分析范畴(类型检查、声明检查、静态越界检查)。

单选题


100. 在正规式中,运算符“*”(闭包)和“|”(或)的优先级关系是( )。

答案:A

解析:

正规式运算符优先级从高到低为:闭包(*)> 连接(隐含)> 或(|)。选项B顺序颠倒,选项C错误,选项D括号可改变但默认优先级固定。

单选题


101. 在Python中,若 x = [1, 2, 3],则 x.append(4) 和 x.extend([5, 6]) 执行后,x的值为( )。

答案:B

解析:

append(4)将4整体加入列表末尾;extend([5,6])将可迭代对象中每个元素逐个追加,故结果为[1,2,3,4,5,6]。选项A为连续两次append的结果,选项C遗漏了extend操作,选项D多出7。

单选题


102. 以下不属于结构化程序设计基本控制结构的是( )。

答案:D

解析:

结构化程序设计定理(Böhm-Jacopini)证明:任何程序都可以用顺序、选择(分支)、循环这三种基本结构来实现,无需使用goto跳转。goto语句破坏了程序的可读性和结构化,是不被推荐的控制方式,不属于结构化程序设计的"基本结构"。因此选D。

单选题


103. 在编译程序的词法分析阶段,其输出结果是( )。

答案:B

解析:

词法分析(Scanner)的任务是读入源程序字符流,识别出具有独立意义的单词符号(Token),如关键字、标识符、常数、运算符等,输出记号序列。选项A是语法分析的输出;选项C是语义分析后的中间代码生成;选项D是目标代码生成阶段的输出。因此选B。

单选题


104. 在正规式中,运算符"·"(连接)的优先级与"|"(或)和"*"(闭包)相比,( )。

答案:B

解析:

正规式运算符的优先级从高到低为:闭包(*)> 连接(隐含或显式·)> 或(|)。因此连接优先级高于或,低于闭包。选项B正确。选项A将连接与或的顺序说反了。因此选B。

单选题


105. 编译程序进行语法分析阶段的主要任务是( )。

答案:B

解析:

编译程序的语法分析阶段根据文法规则,识别输入符号串是否构成合法的语法结构(如表达式、语句、函数定义等),输出语法树。选项A是词法分析,C是语义分析(类型检查),D是目标代码生成。

单选题