一、单选题

1.以下关于下图所示有限自动机的叙述中,不正确的是( )

A、该自动机识别的字符串中a不能连续出现

B、该自动机识别的字符串中b不能连续出现

C、该自动机识别的非空字符串必须以a结尾

D、该自动机识别的字符串可以为空串

正确答案:A

【解析】1既是初态也是终态,从图中可以看出a能连续出现,保持在状态1。

2.下图所示有限自动机的特点是(   )

A、识别的0、1串是以0开头且以1结尾

B、识别的0、1串中1的数目为偶数

C、识别的0、1串中0后面必须是1

D、识别的0、1串中1不能连续出现

正确答案:D

【解析】对于题中自动机的状态图,先忽略状态q0的自环(识别若干个0),从初态q0到终态q1,该自动机可识别的字符串为1、101、10101、…,显然,该自动机识别的0、1串中1不能连续出现。

从初始态q0输入0仍然到q0或者输入1到达终态q1,从q1还可以输入0重新到达初始态q0,所以这个有限自动机识别的0、1串不一定是以0开头的,1的数目的奇偶性也没办法确定,0后面也可以是0,所以选项A、B、C都是错误的。从q0输入1到达终态q1后,或者串结束,或者输入0再到q0,所以这个串中的1不会连续出现,选项D是正确的。

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

A、abab

B、aaaa

C、bbbb

D、abba

正确答案:B

4.下图所示为两个有限自动机M1和M2 (A是初态、C是终态),( )

A、M1和M2都是确定的有限自动机

B、M1和M2都是不确定的有限自动机

C、M1是确定的有限自动机,M2是不确定的有限自动机

D、M1是不确定的有限自动机,M2是确定的有限自动机

正确答案:D

【解析】在本题中给出的图M1中,我们可以看到当在状态A输入0时,它可以转移到它自己,也可以转移到状态B,所以M1是非确定的。而M2中不存在这样的情况,因此是确定的有限自动机。

(1)不确定的有限自动机(NFA):对每一个可能的输入可以有多个状态转移,从接受到输入,从多个状态转移中不确定的地选择一个。

(2)确定的有限自动机(DFA):对每一个可能地输入只有一个状态的转移。

二者最大的区别是它们的转移函数不同。

5.下图所示为一个有限自动机(其中,A是初态、C是终态),该自动机识别的语言可用正规式表示

A、(0|1)*01

B、1*0*10*1

C、1*(0)*01

D、1*(0|10)*1*

正确答案:A

【解析】

(1)被有限自动机所识别是指从初态开始到终态结束,所输入的字符串能够按顺序地执行下去,若到某个状态不能往下走得到下一个字符,则认为不能识别。

(2)在本题中,选项A能被识别。从初态A出发,不管经过多少个1和0之后,只能是处在A、B、C三种状态中的一种,所以在(0|1)*后,只能是处在A、B、C三种状态中的一种,不管是在那个状态,输入0后,都会处在状态B,然后输入1,都会转换到状态C,因此选项A能被该有限自动机所识别。同样的道理,我们可以知道其它选项的正规式不能被识别。(*代表无限多次的意思)。

(3)题中的自动机,从A出发到达C结束的所有路径必然包含BC这条弧(标记为1),同时到达B的弧上都标记了0,所以其识别的字符串必须以01结尾。

补充正则式:

正规式:由正规文法转换而来,通常正规文法等价于正规式。

文法产生式 正规式
规则1 A→xB, B→y A=xy
规则2 A→xA|y

A=x*y

规则3 A→x, A→y A=x|y

*表示可以出现0次或任意多次

x|y表示可能x、也可能是y

正规式 正规集
ab 符号串ab构成的集合

a|b

字符串a、b构成的集合

a* 由0个或多个a构成的符号串集合

(a|b)*

所有字符a和b构成的串的集合

a(a|b)*

a为首字符的a、b字符串集合

(a|b)*abb

以abb结尾的a、b字符串的集合

ab:只有一种情况,就是 ab
a|b:有两种情况,a或者b
a*:有无数种情况

6.下图所示为一个有限自动机(其中,A是初态、C是终态),该自动机所识别的字符串的特点是(    )。

A、必须以11结尾的0、1串

B、必须以00结尾的0、1串

C、必须以01结尾的0、1串

D、必须以10结尾的0、1串

正确答案:C

此题和上题一样,问法不一样。

【解析】

(1)被有限自动机所识别是指从初态开始到终态结束,所输入的字符串能够按顺序地执行下去,若到某个状态不能往下走得到下一个字符,则认为不能识别。

(2)在本题中,选项A能被识别。从初态A出发,不管经过多少个1和0之后,只能是处在A、B、C三种状态中的一种,所以在(0|1)*后,只能是处在A、B、C三种状态中的一种,不管是在那个状态,输入0后,都会处在状态B,然后输入1,都会转换到状态C,因此选项A能被该有限自动机所识别。同样的道理,我们可以知道其它选项的正规式不能被识别。(*代表无限多次的意思)。

(3)题中的自动机,从A出发到达C结束的所有路径必然包含BC这条弧(标记为1),同时到达B的弧上都标记了0,所以其识别的字符串必须以01结尾。

7.某非确定的有限自动机(NFA)的状态转换图如下图所示(q0既是初态也是终态)。以下关于该NFA的叙述中,正确的是(     )

A、其可识别的0、1序列的长度为偶数

B、其可识别的0、1序列中0与1的个数相同

C、其可识别的非空0、1序列中开头和结尾字符都是0

D、其可识别的非空0、1序列中结尾字符是1

正确答案:D

【解析】

8.某确定的有限自动机 (DFA) 的状态转换图如下图所示 (A 是初态,D、E 是终态),则该 DFA 能识别( )

A、00110

B、10101

C、11100

D、11001

正确答案:C

【解析】选项中,只有C选项的字符串能被DFA解析。解析路径为:ACEEBDD。

9.某确定的有限自动机(DFA)的状态转换图如下图所示(0是初态,4是终态),则该DFA能识别(   )

A、aaab

B、abab

C、bbba

D、abba

正确答案:A

【解析】B项从0到1然后走不了了,C项在3状态结束,不对;D项也只到1状态。

10.算术表达式a+(b-c)*d的后缀式是()

A、b c - d * a +

B、a b c - d * +

C、a b + c - d *

D、a b c d - * +

正确答案:B

【解析】后缀式就是后序遍历,左→右→根,根据算术表达式画出这棵二叉树。

后缀式是abc-d*+

11.与逆波兰式ab-cd+*对应的中缀表达式是( )

A、a-b+c*d

B、(a-b)*c+d

C、(a-b)*(c+d)

D、a-b*c+d

正确答案:C

【解析】

逆波兰式是后缀式,就是后序遍历,左→右→根,根据逆波兰式画出这棵二叉树,中缀表达式就是中序遍历,左→根→右。

中缀表达式是a-b*c+d

12.算术表达式x-(y+c)*8的后缀式是()

A、xyc8-+*

B、xy-c+8*

C、xyc8*+-

D、xyc+8*-

正确答案:D

【解析】后缀式就是后序遍历,左→右→根,根据算术表达式画出这棵二叉树。

后缀式是xyc+8*-

13.算术表达式(a-b)*c+d的逆波兰式是(  )

A、abcd -*+

B、ab —cd* +

C、ab-c*d+

D、abc-d*+

正确答案:C

【解析】逆波兰式是后缀式,就是后序遍历,左→右→根,根据算术表达式画出这棵二叉树。

逆波兰式是ab-c*d+

14.与算术表达式“(a+(b-c))*d“ 对应的树是( )

A、

B、

C、 

D、

正确答案:B

15.若将某有序树 T 转换为二叉树 T1,则 T 中结点的后(根)序序列就是 T1 中结点的()遍历序列。例如,下图(a)所示的有序树转化为二叉树后如图(b)所示。

A.先序        B.中序        C.后序        D.层序

所属知识点:数据结构与算法基础>数与二叉树的特性

答案解析:

本题考查数据结构中二叉树基本知识。
对树可进行先根遍历、后根遍历和层序遍历。例如,对题中(a)所示树进行先根遍历的序列为1、2、3、5、6、4、7,后根遍历的序列为2、5、6、3、7、4、1,层序遍历序列为1、2、3、4、5、6、7。
对二叉树可进行先序遍历、中序遍历、后序遍历和层序遍历。对题中(b)所示二叉树进行遍历,先序序列为1、2、3、5、6、4、7,中序序列为2、5、6、3、7、4、1,后序序列为6、5、7、4、3、2、1,层序序列为1、2、3、5、4、6、7。
显然,将树转换为二叉树后,树的先根序列等于对应二叉树的先序序列,树的后根序列等于对应二叉树的中序序列。

16.与逆波兰式ab+ -c*d-对应的中缀表达式是()。
A.a-b-c*d        B.-(a+b)*c-d        C.-a+b*c-d        D.(a+b)*(-c-d)

所属知识点:程序设计语言>后缀表达式

答案解析:

本题考查表达式的表示方式。
  表达式的逆波兰表示也就是后缀表示,在表达式的这种表示方法中,将运算符号写在运算对象的后面,并指明其前面的操作数或中间结果所要执行的运算。对后缀表达式从左到右求值,则每当扫描到一个运算符号时,其操作数是最近刚得到的。因此“ab+-c*d-”表示:先将a与b相加,然后作一元“-”运算,结果再与c相乘,乘运算的结果再与d相减,因此中缀表达式的形式为“-(a+b)*c-d”。

逆波兰式是后缀式,就是后序遍历,左→右→根;中缀表达式是中序遍历,也是算术表达式,左→根→右,根据中缀表达式画出ABCD四个选项的二叉树。

A.

B.

C.

D.

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

A.词法分析 B.语义分析 C.语法分析 D.目标代码生成

所属知识点:程序设计语言>编译器工作过程

答案解析:

词法分析阶段处理的错误:非法字符、单词拼写错误等。

语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。本题选择语义错误。

目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。

18.某确定性有限自动机(DFA)的状态转换图如下图所示,令 d=0|1|2|...|9,则以下字符串中,能被该DFA 接受的是()。

A.3857

B.1.2E+5

C.-123.67

D.0.576E10

所属知识点:程序设计语言>编译与解释答案解析:本题程序语言翻译基础知识。
  翻译高级语言源程序的第一步工作是进行词法分析,即将源程序中的单词(记号)识别出来,该过程可用有限自动机描述。
  自动机M识别一个字符串的过程是从开始状态出发,根据字符串中的字符依次进行状态转移,若能到达终态且字符串结束,则该字符串可被自动机M识别。考查题目中的选项,3857的识别过程是状态0→状态1→状态1→状态1,状态1不是终态;字符串1.2E+5中的“+”不能识别。字符串0.576E10的识别过程是状态0一状态1→状态5→状态6→状态6,在状态6下不能识别E。字符串_123.67的识别过程是状态0→状态4→状态1→状态1→状态1→状态5→状态6→状态6,因此该字符串可被题中的自动机识别。

19.下面C程序段中count++语句执行的次数为( )。

for(int i=1;i<=11;i*=2)for(intj=1;j<=i;j++)count++;

A.15        B.16        C.31        D.32

所属知识点:程序设计语言>其它

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

20.下图是一有限自动机的状态转换图,该自动机所识别语言的特点是(),等价的正规式为()。

(1)A.由符号a.b构成且包含偶数个a的串

B.由符号a.b构成且开头和结尾符号都为a的串

C.由符号a.b构成的任意串

D.由符号a.b构成且b的前后必须为a的串

(2)A.(a∣b)*(aa)*        B.a(a∣b)*a        C.(a∣b)*        D.a(ba)*a

所属知识点:无

答案解析:本题考查有限自动机的基本运算。
  在有限自动机的状态转换图中,每一个结点代表一个状态,其中双圈是终态结点。
  对于字符串ω,若存在一条从初态结点到某一终止状态结点的路径,且这条路径上所有弧的标记符连接成的字符串等于ω,则称ω可由DFA M识别(接收或读出)。若一个DFA M的初态结点同时又是终态结点,则空字ε可由该DFA识别(或接收)。DFA M所能识别的语言L(M)={ω|ω)是从M的初态到终态的路径上的弧上标记所形成的串}。
  分析题中给出的自动机:从初态0出发,识别一个符号a后进入状态1,在状态1可识别出任意个a或(和)任意个b,再识别出一个a而到达终态2。显然,该自动机识别的语言特点是“由a开头由a结尾,期间的a、b任意排列”。用正规式表示为“a(a|b)*a”。

21.某有限自动机的状态转换图如下图所示,与该自动机等价的正规式是( )。


A. (0|1)*        B.(0|10)*        C.0*(10)*        D.0*(1|0)*

所属知识点:程序设计语言>有限自动机

答案解析:本题考查程序语言基础知识。
从题中的自动机可分析出,初态q0同时是终态,从q0到q0的弧(标记0)表明该 自动机识别零个或多个0构成的串,路径q0→q1→q0的循环表明“10”的多次重复,因此该自动机识别的字符串是“0|10”的无穷多次,表示为(0|10)*。

21.计算机执行程序时,内存分为静态数据区、代码区、栈区和堆区。其中( )一般在进行函数调用和返回时由系统进行控制和管理,( )由用户在程序中根据需要申请和释放。

(1)A.静态数据区        B.代码区        C.栈区        D.堆区

(2)A.静态数据区        B.代码区        C.栈区        D.堆区

所属知识点:程序设计语言>其它

答案解析:解析1本题考查程序语言基础知识。
程序在不同的系统中运行时,虽然对其代码和数据所占用的内存空间会有不同的布局和安排,但是一般都包括正文段(包含代码和只读数据)、数据区、堆和栈等。例如,在Linux系统中进程的内存布局示意图如下图所示。

栈是局部变量以及每次函数调用时所需保存的信息的存储区域,其空间的分配和释放由操作系统进行管理。每次函数调用时,其返回地址以及调用者的环境信息(例如某些寄存器)都存放在栈中。然后,在栈中为新被调用的函数的自动和临时变量分配存储空间。栈空间向低地址方向增长。
堆是一块动态存储区域,由程序员在程序中进行分配和释放,若程序语句没有释放, 则程序结束时由操作系统回收。堆空间地址的增长方向是从低地址向高地址。在C程序中,通过调用标准库函数malloc/calloc/realloc等向系统动态地申请堆存储空间来存储相应规模的数据,之后用free函数释放所申请到的存储空间。

22.将编译器的工作过程划分为词法分析、语义分析、中间代码生成、代码优化和目标代码生成时,语法分析阶段的输入是( )。若程序中的括号不配对,则会在( )阶段检查出该错误。问题(1)A.记号流        B.字符流        C.源程序        D.分析树

(2)A.词法分析        B.语法分析        C.语义分析        D.目标代码生成

所属知识点:程序设计语言>编译器工作过程

答案解析:A选项记号流,词法分析的输出是记号流,也就是语法分析的输入,第一空选择A选项。
B选项字符流,在Java中,根据处理的数据单位不同,分为字节流和字符流。字符流是由字符组成的,例如 File Reader、File Writer、Buffered Reader、Buffered Writer、Input Stream Reader、Output Stream Writer 等。与本题无关。
C选项源程序,词法分析的任务是把源程序的字符串转换成单词符号序列。
D选项分析树,如果没有语法错误,语法分析后就能正确的构造出其语法树。
括号不匹配是典型的语法错误,会在语法分析阶段检测出来。

软件设计师——程序设计语言练习相关推荐

  1. 软件设计师---程序设计语言

    笔记有错误欢迎直接在评论区进行纠正!我将不再维护软件设计师笔记! 程序设计语言上午题n分 低级语言和高级语言 编译程序和解释程序 真题 真题1 真题2 真题3 真题4 程序设计语言的数据成分 真题 真 ...

  2. 软件设计师 程序设计语言

    以下内容来源于哔哩哔哩UP主zst_2001的软件设计师教学视频 程序设计语言 1.编译程序和解释程序 2.程序设计语言基本成分 3.传值调用与传地址调用 3.编译.解释程序翻译阶段 4.符号表 5. ...

  3. 软件设计师c语言算法皇后,软件设计师历年试题-算法.ppt

    软件设计师历年试题-算法 1996年下午试题三 [E-R图] 1996年下午试题三 [问题] 填充下列 SQL 程序 3.1-3.4 中的 ①-⑦,使它们分别完成相应的功能:程序 3.1:统计参加比赛 ...

  4. matlab怎样编程形成软件_MATLAB程序设计语言(1)-入门 – MATLAB中文论坛

    本帖最后由 tangbot 于 2018-9-27 12:53 编辑 640.jpeg (17.39 KB, 下载次数: 2) 2018-9-27 12:48 上传 公众号:理念世界的影子 文不可无观 ...

  5. 软件设计师c语言做题技巧,干货!软件设计师备考攻略

    原标题:干货!软件设计师备考攻略 软件设计师属于软考中级.可能大家会觉得中级呀,听起来有点难,我一点基础也没有,怎么考中级啊. 大家不用慌,听上去好像很有难度,但如果你备考计划准备的好,其实是可以考过 ...

  6. 软件设计师教程(四)程序设计语言基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 程序设计语言知识 软件设 ...

  7. 软件设计师考试-程序设计语言与语言处理程序基础

    1. 编译过程 1.1 词法分析 词法分析器的任务是把源文件的字符流转换成记号流. 词法错误包括:非法字符,关键字或标识符拼写错误. 词法分析阶段会对构成源程序的字符集进行扫描和分解,分析构成程序的字 ...

  8. 软件设计师-JAVA程序设计语言

    Java语言简介: 背景 1991年 ,SUN MicroSystem公司的 Jame Gosling. Bill Joe等人 ,在电 视.控制烤面包箱等家用消费类电子产品上进行交互式操作的开发,开始 ...

  9. 软件设计师学习2——程序设计语言基础知识

    1.编译程序和解释程序: 用高级语言和汇编语言写的程序叫源程序,不能直接执行,用汇编写的需要一个汇编程序将其翻译成目标程序后才能执行.高级语言写的需要对应的解释程序或编译程序对其进行翻译 . 解释程序 ...

最新文章

  1. 一套完整的数字无线监控系统需要哪些设备和材料?
  2. 怎么成为优秀的软件模型设计者?
  3. jQueryEasyUI 的入门
  4. 速度×6,模型缩小20倍:用华为华科的TinyBERT做搜索,性能达BERT 90%
  5. qt 二维数组初始化_第十九章、C语言学习之数组3
  6. 【初级网络工程师TOP 100 基础问答】来看看你答的上吗?
  7. python + hadoop (案例)
  8. 讲二次搜索树转化为排序的双向链表
  9. web html介绍笔记,WEB 之 HTML 系列笔记
  10. 构建高并发高可用的电商平台架构实践 转载
  11. 所谓工作能力强,就看这5件事
  12. Android 功耗优化(1)----使用Battery Historian生成电量消耗报告
  13. 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)
  14. 二分图 洛谷P2055 [ZJOI2009]假期的宿舍
  15. cmake编译gtest测试程序(三)
  16. C语言科学计数法字符串转化为实数
  17. yum源提示出现Another app is currently holding the yum lock; waiting for it to exit...
  18. 常见十大算法 冒泡算法
  19. 51Nod 1007 正整数分组
  20. 免费电脑纯净绿色好用的软件

热门文章

  1. 对近期的学习内容进行一个梳理总结
  2. CentOS上Broadcom无线网卡驱动安装
  3. 孩子感冒了该吃什么药?说给程序员朋友的话
  4. 30多个最受用的基于XML的Flash相册教程 -- Part II
  5. 网页设计(四)——DIV+CSS布局3
  6. 服务器内存型号2400,S26361-F3934-E511 8GB 1Rx4 PC4-2400 RX2540M2服务器内存
  7. 上海交通大学c语言程序设计考试,2016年华东交通大学软件学院C语言程序设计考研复试题库...
  8. “新基建”呼唤数据中心“整合者”
  9. 80C51串口的工作方式
  10. mimikatz的基本使用