1、
一般来讲,编译程序生成的目标代码是一种绝对机器代码,可以直接在目标机上运行。
答案:错误
2、
在数中出现非数字字符如123XY45是词法错误。
答案:正确
3、
在源程序中出现非法字符如中文逗号等是语法错误。
答案:错误
4、
为方便语义检查,所有高级语言中变量必须先定义然后才能使用。
答案:正确
5、
编译过程可以由一遍、两遍或多遍完成。
答案:正确
6、
逆波兰式、三元式、四元式、抽象语法树都是中间语言表示,和具体机器平台无关。
答案:正确
7、
不能使用一种高级语言编写另一种高级语言的编译器。
答案:错误
大部分高级语言的编译器是由C语言编写的。
8、
如果发现代码错误,编译器应该立即停止其工作。
答案:错误
“立即”错误,应该先返回错误信息。
9、
标识符是由字母或字符开头,后跟字母、数字或字符的序列组成的单词。
答案:正确
10、
算符、界符、保留字、标识符、数字都是词法分析程序的识别对象。
选择题答案:正确
1、
以下关于解释程序描述错误的是()
A、解释程序接受某个语言的程序并立即运行这个源程序
B、编译程序生成目标程序,解释程序不生成目标程序
C、解释程序的执行速度一般都快于编译程序
D、解释程序的输入包括源程序和输入数据
答案:C
解释程序(比如pathon)一般慢于编译程序(比如c/c++)
2、
Java语言编译后的代码之所以能够跨平台执行是因为()
A、Java编译程序生成的字节码(BYTECODE)是一种与平台无关的中间表示,因此能够直接在所有平台上运行
B、Java虚拟机负责BYTECODE在本地平台的解释执行
C、这些平台都使用了统一的指令格式
D、在一台机器上编译的代码本来就能够在另一台机器上执行,java并无特别之处
答案:B
java代码不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的
3、
编译是对()。
A、机器语言的执行
B、汇编语言的翻译
C、高级语言的翻译
D、高级语言程序的解释执行
答案:C
4、
用高级语言编写的程序经编译后产生的程序叫( ).
A、源程序
B、目标程序
C、连接程序
D、解释程序
答案:B
5、
( )不是编译程序的组成部分。
A、词法分析程序
B、代码生成程序
C、设备管理程序
D、语法分析程序
答案:C
6、
源程序是句子的集合,( )可以较好地反映句子的结构。
A、线性表
B、树
C、完全图
D、堆栈
答案:B
7、
编译程序是一种( )。
A、汇编程序
B、翻译程序
C、解释程序
D、目标程序
答案:B
编译程序,也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。
8、
按逻辑上划分,编译程序第三步工作是( )。
A、 语义分析
B、 词法分析
C、 语法分析
D、 代码生成
答案:A
词法分析 -> 语法分析 -> 语义分析
9、
编译程序中语法分析器接收以( )为单位的输入。
A、 单词
B、 表达式
C、 产生式
D、 句子
答案:A
10、
语法分析时所依据的是( )
A、 语法规则
B、 词法规则
C、 语义规则
D、 等价变换规则
答案:A
11、
通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括( )。
A、 表格处理和出错处理
B、 解释器
C、 模拟执行器
D、 符号执行器
答案:A
12、
一般来说,编译过程由6个阶段组成。以下哪些不属于编译过程的组成部分()
A、 词法分析
B、 语法分析
C、 中间代码生成
D、 代码链接
答案:D
13、
以下哪些不是词法分析的任务()
A、 识别标识符
B、 识别保留字
C、 识别赋值语句
D、 识别数字
答案:C
14、
以下对于语法分析的描述错误的是()
A、 语法分析是编译程序的第二个阶段
B、 语法分析的依据是描述程序结构的语法规则
C、 语法分析的输入是词法分析的输出结果
D、 语法分析可以发现数组越界错误
多选题答案:D
1、
以下哪些错误是在语法分析阶段发现的()
A、else没有匹配的if
B、数组下标不是整形变量
C、使用了未定义的函数
D、语句结尾缺少分号
答案:AD
2、
以下哪些错误是在语义分析阶段发现的()
A、程序中含有死循环
B、数组下标不是整形变量
C、使用了未定义的函数
D、给一个整形变量赋了一个字符串类型的值
答案:BCD
3、
以下属于解释程序的是()
A、BASIC
B、Linux Shell
C、SQL
D、Python
答案:ABCD
4、
以下属于编译前端的是()
A、词法分析
B、语法分析
C、语义分析
D、中间代码生成
E、机器无关的代码优化
F、机器相关的代码优化
G、代码生成
答案:ABCD
5、
指出以下C语言代码存在哪些错误?()
void main(){
int a, b, 123;
a = 0;
b = *a;
}
A、词法错误
B、语法错误
C、语义错误
D、没有错误
答案:BC



