本试卷分三部分,公共部分、C++部分和JAVA部分,其中公共部分为必考部分,C++与JAV
部分,两者选一完成。试卷满分100分。
公共部分(50分)
1:恢复和并发控制的基本单位是__ ______ 事务 (2分)
2:知学生关系:R(学号,姓名,系名称,系地址),每一名学生属于一个系,每一个系有一个地址,则R规范化程度属于___ ___2NF(2分)
3:P地址为 140.111.0.0 的B类网络,若要切割为9个子网,而且都要 连上Internet,请问子网掩码设为(D )。(3分)
A. 255.0.0.0
B. 255.255.0.0
C. 255.255.128.0
D. 255.255.240.0
4:当关系R和S做自然联接时,能够保留R中不满足连接条件记录的操作是 ( A )(3分)
A.左外联接 B.右外联接 C.内部连接 D.全外联接
5:简述中断装置的主要职能(12分,每点4分)
中断装置的职能主要有三点:
1)检查是否有中断事件发生。
2)若有中断发生,保护好被中断进程的断点及现场信息,以便进程在适当时候能恢复驼行。
3)启动操作系统的中断处理程序。
6:ISO网络协议主要层次结构?(14分,每点2分)
物理层,数据链路层,网络层、传输层、会话层、表示层、应用层。
(考察点:注意顺序,不要和tcp混淆)
7:假设有一个“职工”表,表结构如下:(14分)
问题:
查询每个部门中月工资最高的“职工号”的SQL查询语句如下:
SELECT 职工号 FROM 职工 AS A
WHERE 月工资 = (SELECT MAX(月工资) FROM 职工 AS B
WHERE A.部门号 = B.部门号);
1:请简要的说明该查询语句对查询效率的影响(6分)
2:对该查询语句进行修改,使它既可以完成相同的功能,又可以提高查询效率。(8分)
1. 对于外层职工关系 A 中的每一个记录,都要对内层职工关系B进行检索,所有效率不高
2. (1)使用临时表
SELECT MAX(月工资) as 最高工资,部门号 INTO temp FROM 职工
GROUP BY 部门号;
SELECT 职工号 FROM 职工,temp WHERE 月工资=最高工资
AND 职工.部门号 = temp.部门号;
(2)
SELECT 职工号 FROM 职工,(SELECT MAX(月工资) as 最高工资,部门号 FROM 职工 GROUP BY 部门号) as DEPMAX
WHERE 月工资 = 最高工资 AND 职工.部门号 = DEPMAX.部门号;
C++部分(50分)
A struct aa{ int a;int * b;}; B struct bb{ int a;bb * b;};
C struct cc{ int * a;cc b;}; D struct dd{ int * a;aa b;};
A iostream.h B fstream.h C iomanip.h D stdlib.h
3. 设有以下说明和定义:(4分)
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句 printf(“%d”,sizeof(struct date)+sizeof(max));的执行结果是:_______ 52
4. 请写出如下代码运行的结果(10分)
# include
# include
struct Worker{
char name[15]; // 姓名
int age; // 年龄
float pay; // 工资
};
void main() {
Worker x;
char *t=”liouting”;
int d=38; float f=493;
strcpy(x.name,t);
x.age=d; x.pay=f;
cout <
}
liouting 38 493
5. 写出此函数的功能(10分)
struct StrNode {
char name[15]; // 字符串域
StrNode * next; // 指针域
};
void QB(StrNode * & f ,int n) {
if (n==0) { f=NULL; return; }
f=new StrNode;
cin >>f->name;
StrNode * p=f;
while (–n) {
p=p->next=new StrNode;
cin >>p->name;
}
p->next=NULL;
}
建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。
6. #define swap(a,b) /*交换ab*/(6分)
(未完,请完成这个宏定义。)
#define swap(a,b) {a=a+b;b=a-b;a=a-b;}
7. 编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(14分)
# include
# include
# include
void main() {
ofstream fout(“a:xxk1.dat”); // 定义输出文件流并打开文件
if (!fout){
cerr <<”文件没有打开!”<
exit(1);
} // 可有可无
int x;
cin >>x;
while (x!=-1) {
fout <
cin >>x;
} // 能够从键盘向文件正确输出数据
fout.close(); // 关闭输出文件流
}
JAVA部分(50分)
1. 在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( )方法来完成一些画图操作。D(3分)
A. start( ) B. stop( )
C. init( ) D. paint( )
2. 不允许作为类及类成员的访问控制符的是( )。 C(3分)
A. public B. private
C. static D. protected
3. 开发与运行Java程序需要经过的三个主要步骤为 、
和 。
编辑源程序、编译生成字节码、解释运行字节码(6分)
4、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是 类的子类并且存储该源程序文件的文件名为 。(4分)
Applet、MyApplet
5. 若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 和 。
true 、 false(4分)
6谈谈作用域public,private,protected,以及不写时的区别?(12分)
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ ×