软考 DFA的状态转换图+正规式

本文探讨了程序语言中链表定义与运算的特点,并通过自动机理论解释了特定字符串匹配的过程,同时分析了某些集合为何无法用正规式表示的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.


[解析] 至少要有一个.或E,所以在BCD中。
然后不含+,所以在CD中。

然后观察5出去的两条边(对应于.后的字符),如果是数字的话,就不能出现E了,所以选C。

具体来说

0是入口,6是出口,初始进入0状态,必需最终到达6状态
A 3857,状态过程:0->1->1->1->1
B 1.2E+5,E+5状态过程:0->1->5->2->? 
C -123.67,状态过程:0->4->1->1->1->5->6->6

D 0.576E10,状态过程:0->1->5->6->6->6->?


2. 集合L=ambm|m≥0______。

A.可用正规式“a*b*”表示
B.不能用正规式表示,但可用非确定的有限自动机识别
C.可用正规式“ambm”表示
D.不能用正规式表示,但可用上下文无关文法表示

[解析] 正规式只能表示给定结构的固定次数的重复或者没有指定次数的重复。本题中指定了m的重复次数,但是m是不固定的,所以,不能用正规式表示(A、C错误)。
对于每个非确定的有限自动机,都有一个与其等价的正规式,因此B不正确。
上下文无关文法的捕述功能比正规式更强大,可以表示次数不固定的重复,所以D是正确的


3.若一个程序语言可以提供链表的定义和运算,则其运行时的()。

A.数据空间适合采用静态存储分配策略
B.数据空间必须采用堆存储分配策略
C.指令空间需要采用栈结构
D.指令代码必须放入堆区

[解析] 链表一般使用动态分配策略。数组空间往往使用静态存储分配策略。
内存中供用户使用的存储空间可以分为三部分:程序区、静态存储区和动态存储区。动态存储区又分为栈区和堆区。
程序区:用来存放程序代码的内存区。
静态存储区:用来存储程序中的全局变量和局部变量。
栈区:程序运行过程中存放临时数据,可用来保存函数调用时的现场和返回地址,也可以用来存放形式参数变量和自动局部变量等。
堆区:一个自由存储区域,程序通过动态存储分配函数来使用它,用于诸如链表等的存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值