第十章程序设计语言.docx
《第十章程序设计语言.docx》由会员分享,可在线阅读,更多相关《第十章程序设计语言.docx(65页珍藏版)》请在冰豆网上搜索。
第十章程序设计语言
/
程序设计语言
您现在的位置:
希赛网 > 云阅读 > 软件设计师考试试题分类精解(2018版) > 试题1(2017年下半年试题20)
第10章:
程序设计语言作者:
希赛软考学院 来源:
希赛软考学院 2017年11月21日
试题1(2017年下半年试题20)
更适合用来开发操作系统的编程语言是( )。
(20)A.C/C++
试题分析
现行操作系统均由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.aaab
试题分析
B项从0到1然后走不了了,C项在3状态结束,不对;D项也只到1状态。
试题答案
(49)A
@
试题6(2017年下半年试题50)
函数main()、f()的定义如下所示。
调用函数f()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,则函数main()执行后输出的值为( )。
(50)A.10
试题分析
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)*b
B.(ab*)*b
*b*b
D.(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.00110
\
试题分析
选项中,只有C选项的字符串能被DFA解析。
解析路径为:
ACEEBDD。
试题答案
(48)C
试题11(2017年上半年试题49)
函数main()、f()的定义如下所示,调用函数们f()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,main()函数中"print(x)"执行后输出的值为( )。
(49)A.11
试题分析
?
当值传递的时候,将原来的参数复制了一份,但是引用传递的时候是将变量本身传了出去,因此,a代表的其实就是x本身,f函数里面的x是另一个变量,只有a的变化才能导致main函数里面的x值的变化。
试题答案
(49)B
试题12(2017年上半年试题50)
下图为一个表达式的语法树,该表达式的后缀形式为( )。
(50)A.x5y+*a/b-
B.x5yab*+/-
C.-/*+x5yab
D.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(;k<100;);
{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.aabb
试题分析
'
选项中的abab能被解释,其顺序参看图中的序号。
试题答案
(49)B
试题23(2016年上半年试题50)
函数main()、f()的定义如下所示,调用函数f()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,main函数中“print(x)”执行后输出的值为( )。
(50)A.1
?
试题分析
本题考查传址与传值的相关知识,可以使用手动执行程序的方式来进行。
在主函数中,调用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.其可识别的非空0、1序列中开头和结尾字符都是0
D.其可识别的非空0、1序列中结尾字符是1
试题分析
}
要证明一种说法有误只需要举一反例即可,所以做这类题时,举反例排除错误选择是一个不错的选择。
由于题目所述的NFA可以解析串“1”,所以可排除:
A,B,C三个选项。
试题答案
(49)D
试题28(2015年下半年试题50)
函数t()、f()的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数F()时,第一个参数采用传值(callbyvalue)方式,第二个参数采用传引用(callbyreference)方式,则函数t的返回值为( )。
(50)A.33
D.负数
#
试题分析
当程序执行到函数t中,调用f(x,a)时,x=5,a=16。
当程序在f(x,a)中执行完成之后,对r的值的改变,并不会影响实参值,但对s的修改会改变调用的实参值,在f(x,a)中执行完成之后s的值变为38,所以对应实参值a也是38。
最后返回值是:
a-x,即38-5=33。
试题答案
(50)A
试题29(2015年上半年试题20)
以下关于程序设计语言的叙述中,错误的是( )。
(20)A.程序设计语言的基本成分包括数据、运算、控制和传输等
B.高级程序设计语言不依赖于具体的机器硬件
C.程序中局部变量的值在运行时不能改变
D.程序中常量的值在运行时不能改变
试题分析
?
本题考查程序语言基础知识。
选项A涉及程序语言的一般概念,程序设计语言的基本成分包括数据、运算、控制和传输等。
选项B考查高级语言和低级语言的概念。
对于程序设计语言,高级语言和低级语言是指其相对于运行程序的机器的抽象程度。
低级语言在形式上更接近机器指令,汇编语言就是与机器指令一一对应的。
高级语言对底层操作进行了抽象和封装,其一条语句对应多条机器指令,使编写程序的过程更符合人类的思维习惯,井且极大简化了人力劳动。
高级语言不依赖于具体的机器硬件。
选项C考查局部变量的概念,凡是在函数内部定义的变量都是局部变量(也称作内部变量),包括在函数内部复合语句中定义的变量和函数形参表中说明的形式参数。
局部变量只能在函数内部使用,其作用域是从定义位置起至函数体或复合语句体结束为止。
局部变量的值通常在其生存期内是变化的。
选项D考查常量的概念,程序中常量的值在运行时是不能改变的。
试题答案
(20)C
试题30(2015年上半年试题21)
与算术表达式“(a+(b-c))*d”对应的树是( )。
(21)A.
B.
C.
D.
试题分析
本题考查程序语言与数据结构基础知识。
对算术表达式"(a+(b-c))*d"求值的运算处理顺序是:
先进行b-c,然后与a相加,最后再与d相乘。
只有选项B所示的二叉树与其相符。
…
试题答案
(21)B
试题31(2015年上半年试题22)
C程序中全局变量的存储空间在( )分配。
(22)A.代码区
B.静态数据区
C.栈区
D.堆区
试题分析
全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。
试题答案
<
(22)B
试题32(2015年上半年试题48)
对高级语言源程序进行编译或解释的过程可以分为多个阶段,解释方式不包含( )阶段。
(48)A.词法分析
B.语法分析
C.语义分析
D.目标代码生成
试题分析
本题考查程序语言基础知识。
用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。
汇编语言源程序需要用一个汇编程序将其翻译成目标程序后才能执行。
高级语言源程序则需要对应的解释程序或编译程序对其进行翻译,然后在机器上运行。
解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行:
而编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
这两种语言处理程序的根本区别是:
在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程:
而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。
简单来说,在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。
试题答案
(48)D
—
试题33(2015年上半年试题49)
某非确定的有限自动机(NFA)的状态转换图如下图所示(q0既是初态也是终态),与该NFA等价的确定的有限自动机(DFA)是( )。
(49)A.
B.
C.
D.
试题分析
本题使用代入法进行验证比较容易。
(1)代入aaa,选项B与C无法解析,故排除。
(2)代入ba,选项D无法解析,也要排除,此时可以确定正确答案为A。
试题答案
;
(49)A
试题34(2015年上半年试题50)
递归下降分析方法是一种( )方法。
(50)A.自底向上的语法分析
B.自上而下的语法分析
C.自底向上的词法分析
D.自上而下的词法分析
试题分析
所谓递归下降法(recursivedescentmethod),是指对文法的每一非终结符号,都根据相应产生式各候选式的结构,为其编写一个子程序(或函数),用来识别该非终结符号所表示的语法范畴。
试题答案
(50)B
》
试题35(2014年下半年试题18)
属于面向对象、解释型程序设计语言的是( )。
(18)A.XML
试题分析
C++:
是在C语言的基础上发展起来的,主要增加了类的功能,使其成为面向对象的程序设计语言。
Prolog:
是以特殊的逻辑推理形式回答用户的查询,它建立在关系理论和一阶谓词理论基础上。
经常用于数据库和专家系统。
Python:
是一种面向对象、解释型计算机程序设计语言,由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。
Python语法简洁而清晰,具有丰富和强大的类库。
它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
试题答案
!
(18)B
试题36(2014年下半年试题21)
算术表达式“(a-b)*(c+d)”的后缀式是( )。
(21)A.ab-cd+*
*+
+*cd
+d*
试题分析
后缀表达式是从左到右算。
把表达式加上括号,((a-b)*(c+d)),再把运算符加到括号外面ab-cd+*。
答案为A。
试题答案
(21)A
.
试题37(2014年下半年试题22)
将高级语言源程序翻译成机器语言程序的过程中,常引入中间代码。
以下关于中间代码的叙述中,不正确的是( )。
(22)A.中间代码不依赖于具体的机器.
B.使用中间代码可提高编译程序的可移植性
C.中间代码可以用树或图表示
D.中间代码可以用栈和队列表示
试题分析
本题考查程序语言基础知识。
从原理上讲,对源程序进行语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难,而且用语法制导方式机械生成的目标代码往往是繁琐和低效的,因此有必要设计一种中间代码,将源程序首先翻译成中间代码表示形式,以利于进行与机器无关的优化处理。
由于中间代码实际上也起着编译器前端和后端分水岭的作用,所以使用中间代码也有助于提高编译程序的可移植性。
常用的中间代码有后缀式、三元式、四元式和树(图)等形式。
试题答案
(22)D
`
试题38(2014年下半年试题48)
对高级语言源程序进行编译的过程可以分为多个阶段,分配寄存器的工作在( )阶段进行。
(48)A.词法分析
B.语法分析
C.语义分析
D.目标代码生成
试题分析
目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:
一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。
试题答案
(48)D
试题39(2014年下半年试题49)
{
以下关于下图所示有限自动机的叙述中,不正确的是( )。
(49)A.该自动机识别的字符串中a不能连续出现
B.自动机识别的字符串冲b不能连续出现
C.该自动机识别的非空字符串必须以a结尾
D.该自动机识别的字符串可以为空串
试题分析
从图中可以看出a能连续出现。
试题答案
(49)A
—
试题40(2014年下半年试题50)
对于大多数通用程序设计语言,用( )描述其语法即可。
(50)A.正规文法
B.上下文无关文法
C.上下文有关文法
D.短语结构文法
试题分析
上下文无关文法:
形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为2型文法。
由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。
试题答案
(50)B
试题41(2014年上半年试题20)
—
以下程序设计语言中,( )更适合用来进行动态网页处理。
(20)A.HTML
C++
试题分析
HTML:
静态网页
LISP:
一种基于λ演算的函数式编程语言
PHP:
混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。
试题答案
(20)C
试题42(2014年上半年试题21)
/
引用调用方式下进行函数调用,是将( )。
(21)A.实参的值传递给形参
B.实参的地址传递给形参
C.形参的值传递给实参
D.形参的地址传递给实参
试题分析
引用调用是函数传递参数的一种方式,使用引用调用,可以在子函数中对形参所做的更改对主函数中的实参有效。
引用可以看成是一种特殊类型的变量可