程序设计语言您现在的位置:希赛网云阅读软件设计师考试试题分类精解(2018版)试题1(2017年下半年试题20)第10章:程序设计语言作者:希赛软考学院来源:希赛软考学院2017年11月21日试题1(2017年下半年试题20)更适合用来开发操作系统的编程语言是()。(20)A.C/C++B.JavaC.PythonD.JavaScript试题分析现行操作系统均由C/C++开发。试题答案(20)A试题2(2017年下半年试题21)以下关于程序设计语言的叙述中,不正确的是()。(21)A.脚本语言中不使用变量和函数B.标记语言常用于描述格式化和链接C.脚本语言采用解释方式实现D.编译型语言的执行效率更高试题分析脚本语言中使用变量和函数来完成程序。试题答案(21)A试题3(2017年下半年试题22)将高级语言源程序通过编译或解释方式进行翻译时,可以先生成与源程序等价的某种中间代码。以下关于中间代码的叙述中,正确的是()。(22)A.中间代码常采用符号表来表示B.后缀式和三地址码是常用的中间代码C.对中间代码进行优化要依据运行程序的机器特性D.中间代码不能跨平台试题分析B只是类似于三地址码,CD与具体的机器无关。试题答案(22)A试题4(2017年下半年试题48)编译过程中进行的语法分析主要是分析()。(48)A.源程序中的标识符是否合法B.程序语句的含义是否合法C.程序语句的结构是否合法D.表达式的类型是否合法试题分析语法分析主要是分析数据类型是否合法。试题答案(48)D试题5(2017年下半年试题49)某确定的有限自动机(DFA)的状态转换图如下图所示(0是初态,4是终态),则该DFA能识别()。(49)A.aaabB.ababC.bbbaD.abba试题分析B项从0到1然后走不了了,C项在3状态结束,不对;D项也只到1状态。试题答案(49)A试题6(2017年下半年试题50)函数main()、f()的定义如下所示。调用函数f()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,则函数main()执行后输出的值为()。(50)A.10B.19C.20D.29试题分析x=2*10-1=19;a=a+x=10+19=29;a是引用传递,所以结果为29。试题答案(50)D试题7(2017年上半年试题20)在高级语言源程序中,常需要用户定义的标识符为程序中的对象命名,常见的命名对象有()①关键字(或保留字)②变量③函数④数据类型⑤注释(20)A.①②③B.②③④C.①③⑤D.②④⑤试题分析关键字和注释不能作为标识符给对象命名。试题答案(20)B试题8(2017年上半年试题21)在仅由字符a、b构成的所有字符串中,其中以b结尾的字符串集合可用正规式表示为()。(21)A.(b|ab)*bB.(ab*)*bC.a*b*bD.(a|b)*b试题分析正规式(a|b)*对应的正规集为{ε,a,b,aa,ab,…,所有由a和b组成的字符串},结尾为b。试题答案(21)D试题9(2017年上半年试题22)在以阶段划分的编译过程中,判断程序语句的形式是否正确属于()阶段的工作。(22)A.词法分析B.语法分析C.语义分析D.代码生成试题分析检查单个词是否正确,属于词法阶段的工作。而识别判断程序语句形式是否正确属于语法分析的工作。试题答案(22)B试题10(2017年上半年试题48)某确定的有限自动机(DFA)的状态转换图如下图所示(A是初态,D、E是终态),则该DFA能识别()。(48)A.00110B.10101C.11100D.11001试题分析选项中,只有C选项的字符串能被DFA解析。解析路径为:ACEEBDD。试题答案(48)C试题11(2017年上半年试题49)函数main()、f()的定义如下所示,调用函数们f()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,main()函数中print(x)执行后输出的值为()。(49)A.11B.40C.45D.70试题分析当值传递的时候,将原来的参数复制了一份,但是引用传递的时候是将变量本身传了出去,因此,a代表的其实就是x本身,f函数里面的x是另一个变量,只有a的变化才能导致main函数里面的x值的变化。试题答案(49)B试题12(2017年上半年试题50)下图为一个表达式的语法树,该表达式的后缀形式为()。(50)A.x5y+*a/b-B.x5yab*+/-C.-/*+x5yabD.x5+*y+a/b-试题分析要得到题目中的表达式语法树后缀形式,只需要对树进行后序遍历即可,后序遍历的结果为:x5y+*a/b-。试题答案(50)A试题13(2017年上半年试题57)以下关于字符串的叙述中,正确的是()。(57)A.包含任意个空格字符的字符串称为空串B.字符串不是线性数据结构C.字符串的长度是指串中所含字符的个数D.字符串的长度是指串中所含非空格字符的个数试题分析空格也是一个字符,所以包含空格的字符串不能称为空串,所以字符串的长度是指字符串所有字符个数的总和(包括空格);字符串是线性结构。试题答案(57)C试题14(2016年下半年试题21)常用的函数参数传递方式有传值与传引用两种。()。(21)A.在传值方式下,形参与实参之间互相传值B.在传值方式下,实参不能是变量C.在传引用方式下,修改形参实质上改变了实参的值。D.在传引用方式下,实参可以是任意的变量和表达式。试题分析传值调用最显著的特征就是被调用的函数内部对形参的修改不影响实参的值。引用调用是将实参的地址传递给形参,使得形参的地址就是实参的地址。试题答案(21)C试题15(2016年下半年试题48)由字符a、b构成的字符串中,若每个a后至少跟一个b,则该字符串集合可用正规式表示为()。(48)A.(b|ab)*B.(ab*)*C.(a*b*)*D.(a|b)*试题分析A的方式可以保证a后面必定是b试题答案(48)A试题16(2016年下半年试题49)乔姆斯基(Chomsky)将文法分为4种类型,程序设计语言的大多数语法现象可用其中的()描述。(49)A.上下文有关文法B.上下文无关文法C.正规文法D.短语结构文法试题分析上下文无关文法:形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为2型文法。由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。试题答案(49)B试题17(2016年下半年试题50)运行下面的C程序代码段,会出现()错误。intk=0;for(;k100;);{k++;}(50)A.变量未定义B.静态语义C.语法D.动态语义试题分析在本题中,for语句后有“;”号,说明该循环语句的语句体为空,此时,循环会是一个死循环,所以存在语义错误。试题答案(50)D试题18(2016年上半年试题20)以下关于高级程序设计语言实现的编译和解释方式的叙述中,正确的是()。(20)A.编译程序不参与用户程序的运行控制,而解释程序则参与B.编译程序可以用高级语言编写,而解释程序只能用汇编语言编写C.编译方式处理源程序时不进行优化,而解释方式则进行优化D.编译方式不生成源程序的目标程序,而解释方式则生成试题分析编译程序的功能是把用高级语言书写的源程序翻译成与之等价的目标程序。编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。目标程序可以独立于源程序运行。解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它是直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。试题答案(20)A试题19(2016年上半年试题21)以下关于脚本语言的叙述中,正确的是()。(21)A.脚本语言是通用的程序设计语言B.脚本语言更适合应用在系统级程序开发中C.脚本语言主要采用解释方式实现D.脚本语言中不能定义函数和调用函数试题分析脚本语言(Scriptlanguages,scriptingprogramminglanguages,scriptinglanguages)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批处理语言或工作控制语言。一个脚本通常是解释运行而非编译。试题答案(21)C试题20(2016年上半年试题22)将高级语言源程序先转化为一种中间代码是现代编译器的常见处理方式。常用的中间代码有后缀式、()、树等。(22)A.前缀码B.三地址码C.符号表D.补码和移码试题分析中间代码的表达形式有语法树,后缀式,三地址代码。试题答案(22)B试题21(2016年上半年试题48)移进--归约分析法是编译程序(或解释程序)对高级语言源程序进行语法分析的一种方法,属于()的语法分析方法。(48)A.自顶向下(或自上而下)B.自底向上(或自下而上)C.自左向右D.自右向左试题分析归约分析是自底向下方法中的典型。试题答案(48)B试题22(2016年上半年试题49)某确定的有限自动机(DFA)的状态转换图如下图所示(A是初态,C是终态),则该DFA能识别()。(49)A.aabbB.ababC.babaD.abba试题分析选项中的abab能被解释,其顺序参看图中的序号。试题答案(49)B试题23(2016年上半年试题50)函数main()、f()的定义如下所示,调用函数f()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,main函数中“print(x)”执行后输出的值为()。(50)A.1B.6C.11D.12试题分析本题考查传址与传值的相关知识,可以使用手动执行程序的方式来进行。在主函数中,调用f(5,x)之后:f()函数中的x=5,a=1。x=2*x+1,则x=11。a=a+x,则a=12。由于a是以传址的方式传入的参数,所以主函数中的x与其值相同,也为12。打印结果应为12。试题答案(50)D试题24(2015年下半年试题20-21)编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,()并不是每个编译器都必需的,与编译器相比,解释器()。(20)A.词法分析和语法分析B.语义分析和中间代码生成C.中间代码生成和代码优化D.代码优化和目标代码生成(21)A.不参与运行控制,程序执行的速度慢B.参与运行控制,程序执行的速度慢C.参与运行控制,程序执行的速度快D.不参与运行控制,程序执行的速度快试题分析在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的。试题答案(20)C(21)B试题25(2015年下半年试题22)表达式采用逆波兰式表示时,利用()进行求值。(22)A.栈B.队列C.符号表D.散列表试题分析逆波兰使用栈的基本操作流程为:从左至右将数字入栈,当遇运算符时,出栈运算符所需数据进行操作,再将操作结果入栈,依此类推。试题答案(22)A试题26(2015年下半年试题48)某程序运行时陷入死循环,则可能的原因是程序中存在()。(48)A.词法错误B.语法错误C.动态的语义错误D.静态的语义错误试题分析死循环错误属于典型的语义错误,但静态的语义错误可被编译器发现,到程序真正陷入死循环说明编译器并未发现,所以属于动态语义错误。试题答案(48)C试题27(2015年下半年试题49)某非确定的有限自动机(NFA)的状态转换图如下图所示(q0既是初态也是终态)。以下关于该NFA的叙述中,正确的是()。(49)A.其可识别的0、1序列的长度为偶数B.其可识别的0、1序列中0与1的个数相同C.其