附录 部分习题参考答案
第1章习题
1. 解释下列术语。
翻译程序,编译程序,解释程序,源程序,目标程序,遍,前端,后端
解答:略!
2. 高级语言程序有哪两种执行方式?阐述其主要异同点。描述编译方式执行程序的过程。
解答:略!
3. 在你所使用的C语言编译器中,观察程序1.1经过预处理、编译、汇编、链接四个过程生成的中间结果。
解答:略!
4. 编译程序有哪些主要构成成分?各自的主要功能是什么?
解答:略!
5. 编译程序的构造需要掌握哪些原理和技术?编译程序构造工具的作用是什么?
解答:略!
6. 复习C语言,其字母表中有哪些符号?有哪些关键字、运算符和界符?标识符、整数和实数的构成规则是怎样的?各种语句和表达式的结构是什么样的?
解答:略!
7. 编译技术可应用在哪些领域?
解答:略!
8. 你能解释在Java编译器中,输入某个符号后会提示一些单词、某些单词会变为不同的颜是如何实现的吗?你能解释在Code Blocks中在输入{后,会自动添加},输入do 会自动添加while()是为什么吗?
解答:略!
第2章习题
1. 判断题,对下面的陈述,正确的在陈述后的括号内画√,否则画×。
(1) 有穷自动机识别的语言是正规语言。 ( )
(2) 若r1和r2是Σ上的正则表达式,则r1|r2也是。 ( )
(3) 设M是一个NFA,并且L(M)={x,y,z},则M的状态数至少为4个。 ( )
(4) 令Σ={a,b},则所有以b开头的字构成的正规集的正则表达式为b*(a|b)*。( )
(5) 对任何一个NFA M,都存在一个DFA M',使得L(M')=L(M)。 ( )
1解答:略!
2.从供选择的答案中,选出应填入下面叙述中 ?内的最确切的解答。
有穷自动机可用五元组(Q,VT,,q0,Qf)来描述,设有一有穷自动机M定义如下:VT={0,1},Q={q0,q1,q2},Qf={q2},的定义为:
(q0,0)=q1 undefined (q1,0)=q2
(q2,1)=q2 undefined (q2,0)=q2
M是一个 A 有穷状态自动机,它所对应的状态转换图为 B ,它所能接受的语言可以用正则表达式表示为 C 。其含义为 D 。
供选择的答案:
A: ①歧义的 ②非歧义的 ③确定的 ④非确定的
B:
C: ①(0|1)* ②00(0|1)* ③(0|1)*00 ④0(0|1)*0
D: ①由0和1所组成的符号串的集合
②以0为头符号和尾符号,由0和1所组成的符号串的集合
常用的java编译器有哪些 ③以两个0结束的,由0和1所组成的符号串的集合
④以两个0开始的,由0和1所组成的符号串的集合
2. [分析]
有限自动机分为确定有限自动机和非确定有限自动机。确定有限自动机的确定性表现在映射 :Q×VT -->q是单值函数,也就是说,对任何状态 q∈Q和输入字符串a∈VT, (q,a)唯一确定下一个状态。显然,本题给出的是一个确定的有限自动机,它的状态转换图是C中的②。
它所接受的语言可以用正则表达式表示为00(0|1)*,表示的含义为由两个0开始的后跟任意个(包含0个)0或1组成的符号串的集合。
2. 解答:A:④ B:③ C:② D:② E: ④
3.查阅自己熟悉的高级语言的规范,如C或Java,确定:字符集是什么(不包含那些只能出现在字符串或注释中的字符),数字常量的构成形式是什么,标识符的词法规则是什么?
3解答:略!
4.画出下面的状态转换图,并给出相应的识别函数。
(1) C语言中字符常量是由一对单引号括起来的单个字符,或者以\开头的两个字符表示的转义字符;
解答:
(2) C语言中以/开头的单词有多种,如/、/=、//、/*等,其中前两种表示除法运算和除法赋值运算,它们需要返回单词本身;后两种表示注释:以/*和*/括起来的多行注释、以//标记的单行注释,后两种识别后不需要返回单词,直接跳过;
解答:
(3) C语言中的整数有多种形式:十进制、八进制和十六进制;
解答:
(4) C语言中不带指数的浮点数;
解答:
5.一个长度为n的字符串,前缀和后缀分别有多少个,如果字符串为abcd,分别是哪些?
解答:前缀和后缀都是n+1个,字符串abcd的前缀分别, ,a,ab,abc,abcd,后缀分别是: ,d,cd,bcd,abcd。
6.试写出以下各描述中所表示的正则表达式:
(1) 以01结尾的二进制数串;
解答:(0|1)*01
(2) 不以0开头,能被5整除的十进制整数;
解答:((1|2|…|9)(0|1|2|…|9)*| )(0|5)
(3) 包含子串011的由0和1组成的符号串的全体;
解答:(0|1)*(011)(0|1)*
(4) 不包含子串011的由0和1组成的符号串的全体;
解答:1*(01|0)* | 1*0(0|10)*(1| )
(5) 按字典序递增排列的所有小写字母串;
解答:a*b*c*…z*
(6) Σ={0,1}上的含奇数个1的所有串。
解答:(0|10*1)*1
(7) 包含偶数个0和1的二进制串;
解答:(00|11) | (00|11)*((01|10)(00|11)*(01|10)(00|11)*)*
(8) 具有偶数个0和奇数个1的由0和1组成的符号串的全体;
解答:[分析]
设S是符合要求的串,|S|=2k+1 (k≥0)。
则 S→S10|S21,|S1|=2k (k>0),|S2|=2k (k≥0)。
且S1是{0,1}上的串,含有奇数个0和奇数个1。
S2是{0,1}上的串,含有偶数个0和偶数个1。
考虑有一个自动机M1接受S1,那么自动机M1如下:
和L(M1)等价的正规式,即S1为:
((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*
类似的考虑有一个自动机M2接受S2,那么自动机M2如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论