一.单选题(共20题,70.0分)
1
下列哪项工作属于语义分析的范畴?
A、
单词拼写错误检查
B、
括号不匹配
C、
加法运算两个操作数的类型不兼容
D、
寄存器分配
正确答案: C 我的答案:C
得分: 3.5分
2
程序设计语言的语义分为静态语义和动态语义,其中编译时能检查的语义是_______.
A、
静态语义
B、
动态语义
正确答案: A 我的答案:A
得分: 3.5分
3
语义分析所依据的是_______.
A、
源语言的语法规则
B、
源语言的语义规则
C、
等价变换规则
D、
目标语言的语义规则
正确答案: B 我的答案:B
得分: 3.5分
4
下列错误属于静态语义错误的是_______
A、
括号不匹配
B、
出现非法字符
C、
类型不相容
D、
无效指针
正确答案: C 我的答案:C
得分: 3.5分
5
编译程序不能检查处理的错误是_______.
A、
静态语义错误
B、
动态语义错误
C、
语法错误
D、
词法错误
正确答案: B 我的答案:D
得分: 0.0分
6
编译过程中符号表的作用是记录_______中各个符号的必要信息,以辅助语义的正确性检查和代码生成.
A、
源程序
B、
目标程序
C、
汇编程序
D、
可执行程序
正确答案: A 我的答案:A
得分: 3.5分
7
符号表常用的操作不包括_______.
A、
查询给定的名字是否已在表中
B、
检查名字是否符合标识符命名的文法
C、
对给定名字,往表中填写或更新它的某些信息
D、
删除一个或一组无用的项
正确答案: B 我的答案:B
得分: 3.5分
8
属于标识符“种类”属性信息的描述是_______.
A、
整型
B、
函数
C、
地址
D、
指针
正确答案: B 我的答案:A
得分: 0.0分
9
编译一个源程序时,符号表可以是一张统一的表,也可以按名字的不同种类分为几张不同的表。以上说法_______.
A、
正确
B、
不正确
正确答案: A 我的答案:A
得分: 3.5分
答案解析:
10
在目标代码生成阶段,符号表用于_______.
A、
语义检查
B、
地址分配
C、
目标代码生成
D、
优化
正确答案: B 我的答案:B
得分: 3.5分
11
关于全局变量与局部变量的说法,正确的是_______.
A、
全局变量的作用域是从声明该变量的位置开始,一直到程序结束
B、
局部变量的作用域是声明该局部变量的函数或复合语句
C、
当发生作用域嵌套时,标识符的使用遵循“最近嵌套”原则
正确答案: C 我的答案:C
得分: 3.5分
12
函数标识符内部表示中有一项是函数的目标代码的入口地址,该项信息是在_______时填写的.
A、
语法分析
B、
语义分析
C、
中间代码生成
D、
目标代码生成
正确答案: D 我的答案:D
得分: 3.5分
13
约定整型占1个单元,实型占2个单元。根据下面的声明,每个类型为date的变量占______个单元。
union category {
int grade;
float score;
}
struct date {
int year, month, day;
union category property;
}
A、
2
B、
4
C、
5
D、
6
正确答案: C 我的答案:C
得分: 3.5分
14
约定整型占1个单元,实型占2个单元。根据下面的声明,变量score占______个单元。
float score[100];
A、
2
B、
100
C、
200
正确答案: C 我的答案:C
得分: 3.5分
15
约定整型占1个单元,实型占2个单元。根据下面的声明,变量score占______个单元。
float score[10][10];
A、
2
B、
100
C、
200
D、
2000
正确答案: C 我的答案:C
得分: 3.5分
答案解析:
16
约定整型占1个单元。根据下面的声明,变量papercolor占______个单元。
enum color {red, yellow, blue, green,white };
color papercolor;
A、
1
B、
2
C、
5
D、
0
正确答案: A 我的答案:A
得分: 3.5分
17
约定每个局部化单位的起始偏移为0,操作系统为每个整型、字符型变量分配1个字节的内存空间。在下面的程序中,第1行代码中变量i的层数和偏移量是_______.
i=’A’;
{ int i ;
i = ‘B’;
A、
0,0
B、
0,1
C、
1,0
D、
1,1
正确答案: A 我的答案:A
得分: 3.5分
答案解析:
18
约定每个局部化单位的起始偏移为0,整型、字符型占1个单元。在下面的程序中,第3行代码中变量i的层数和偏移量是_______.
i=’A’;
{ int i ;
i = ‘B’;
A、
0,0
B、
0,1
C、
1,0
D、
1,1
正确答案: C 我的答案:C
得分: 3.5分
答案解析:
19
约定每个局部化单位的起始偏移为0,整型、字符型占1个单元,实型占2个单元。在下面的程序中,第5行代码中变量i的层数和偏移量是_______.
i=’A’;
{ float i ;
i = ‘B’;
A、
1,0
B、
1,1
C、
2,0
D、
2,1
正确答案: B 我的答案:C
得分: 0.0分
答案解析:
20
约定每个局部化单位的起始偏移为0,整型、字符型占1个单元,实型占2个单元,不考虑优化。在下面程序中,第7行代码中变量i的层数和偏移量是_______.
i=’A’;
{ float i ;
i = ‘B’;
10.}
A、
1,1
B、
1,3
C、
2,0
D、
2,1
正确答案: B 我的答案:C
得分: 0.0分
答案解析:
二.多选题(共8题,30.0分)
1
下面C语言程序中,可能存在的语义(包括动态语义)错误有_______.
int x = 0,z;
float y(){…};
int main(){
z = x() + t;
z /= x;
x = y();
}
A、
标识符使用时的种类和声明时的种类不一致
B、
标识符未声明
C、
除零溢出
D、
赋值语句左右部的类型不相容
正确答案: ABCD 我的答案:ABD
得分: 1.8分
答案解析:
2
构建符号表时,为提高符号表的查找效率,可将符号表组织成________.
A、
二叉树形式
B、
散列表
C、
顺序表
D、
多表结构
正确答案: ABD 我的答案:ABC
得分: 0.0分
3
符号表中的标识符,一般设置的属性有______.
A、
名字
B、
类型
C、
存储分配信息
D、
作用域及可见性
正确答案: ABCD 我的答案:AB
得分: 1.8分
4
函数标识符的属性表示中一般应包含_______.
A、
函数名
B、
函数参数信息
C、
函数体对应目标代码入口地址
D、
函数返回值类型
正确答案: ABCD 我的答案:ACD
得分: 1.8分
答案解析:
5
构造类型如数组,结构体等的内部表示中一般应包含_______.
A、
构造类型的名字
B、
构造类型的种类
C、
构造类型所占内存空间的大小
D、
构造类型相关的详细信息,如数组的上下界,成分类型,结构体的各个域的信息等
正确答案: BCD 我的答案:ABCD
得分: 0.0分
答案解析:
6
关于标识符的作用域,以下说法正确的是______.
A、
用户定义的每一个标识符都有作用域
B、
标识符的作用域是编译时确定的
C、
标识符的作用域是目标代码运行时确定的
D、
标识符在其作用域内使用它是合法的;反之在作用域外使用它是非法的。
正确答案: ABD 我的答案:ABD
得分: 3.5分
7
关于C语言标识符作用域的说法,正确的是______.
A、
在C语言中,每个源程序编译单位、每个函数定义、复合语句都各自构成一个作用域区域
B、
标识符必须先声明再使用,同一作用域内标识符不得重复声明
C、
在嵌套结构中,内层标识符可以与外层标识符同名
D、
在嵌套结构中,外层标识符的作用域要去掉内层同名标识符的作用域区域
正确答案: ABCD 我的答案:ABCD
得分: 3.5分
答案解析:
8
全局符号表可以采用______解决符号表的局部化问题.
A、
删除法
B、
驻留法
C、
散列法
D、
局部符号表
正确答案: ABC 我的答案:ABC