试卷详情
-
中级软件设计师下午试题-60
-
[简答题]选出正确的关系代数表达式。
-
[简答题]选出正确的关系代数表达式。
查询所有“外科”病区和“内科”病区的所有医生姓名;- A.σName="外科"∨Name="内科"(π4(Q))
- B.σName="外科"∧Name="内科"(π4(Q))
- C.π4(σName="外科"∨Name="内科"(Q))
- D.π4(σName="外科"∧Name="内科"(Q))
-
[填空题]阅读下列函数说明和C代码,
[说明]
所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。
应用贪婪法求解该问题,程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。
函数中使用的预定义符号如下:
#define M 100
typedef struct/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/
float x;
int p1,p2;
tdr;
typedef struct/*p1、p2为和端点相联系的两个端点,n为端点的度*/
int n,p1,p2;
tr;
typedef struct/*给出两点坐标*/
float x,y;
tpd;
typedef int tl[M];
int n=10;
[函数]
float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/
void sortArr(tdr a[M],int m);
/*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/
int isCircuit(tr r[M],int i,int j);
/*判断边(i,j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/
void selected(tr r[M],int i,int j);/*边(i,j)选入端点关系表r*/
void course(tr r [M],tl l[M]);/*从端点关系表r中得出回路轨迹表*/
void exchange(tdr a[M],int m,int b);
/*调整表排序表,b表示是否可调,即是否有长度相同的边存在*/
void travling(tpd pd [M],int n,float dist,tl loc
-
[简答题]阅读下列说明和数据流图,回答问题1至问题3,
[说明]
考务处理系统具有如下功能:
(1)对考生送来的报名单进行检查。
(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷。
(3)对阅卷站送来的成绩清单进行检查,并根据考试中心制订的合格标准审定合格者。
(4)制作考生通知单送给考生。
(5) 进行成绩分类统计(按地区、年龄、文化程度、职业、考试级别等分类)和试题难度分析,产生统计分析表。
以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图1-1是顶层数据流图,图1-2是第0层数据流图,图1-3是第l层数据流图,其中(A)是加工1的子图,(B)是加工2的子图。
[图1-1]
[*]
[图1-2]
[*]
[图1-3]
[*]
[数据字典]
报名单=地区+序号+姓名+性别+年龄+文化程度+职业+考试级别+通信地址
正式报名单=报名单+准考证号
准考证=地区+序号+姓名+准考证号+考试级别
考生名单=准考证号+考试级别
统计分析表=分类统计表+难度分析表
考生通知单=考试级别+准考证号+姓名+合格标志+通信地址
根据题意,指出0层数据流图(图1-2)中缺失的数据流的名称,并指出该数据流的起点和终点。
-
[简答题]阅读下列说明和图,回答问题1至问题2,
[说明]
移动电话是传统固定式电话的延伸,通过无线电网络可以与千里之外的朋友沟通而不受电话线的束缚。现在的移动电话功能更全面,除了作为电话使用外,还可以发送短信,可以管理电话簿,可以下载铃声、图案。
手机由键盘、显示屏以及移动通信设备组成,移动通信设备负责发送和接收信号,与基站进行连线。打电话的流程如下:
(1) 用户拨电话号码,每按下一个数字键显示屏上显示相应数字;
(2) 按OK键进行连线,显示屏上显示“连线中…”,请求连接基站,基站通过移动电话网络连接到对方手机,若有误则返回相关信息;
(3) 接通后,显示屏显示“连线成功”;
(4) 打电话结束后,按Cancel送出断线信号,通知移动电话基站断线,基站切断连接,显示屏显示“断线成功”。
该系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图3-1是该系统的用例图,图3-2是该系统的类图,图3-3描述了打电话(包括断开)的序列图。
[图3-1]
[*]
[图3-2]
[*]
[图3-3]
[*]
根据题意,用题中及类图中提供的术语指出图3-1中的参与者A及用例B、C各是什么。
-
[简答题]层次模型不能直接表示多对多联系,为什么可采用哪些方法进行多对多联系的表示。
-
[填空题]阅读以下说明和C++代码,
[说明]
现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例化矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图6-1显示了各个类间的关系。
[图6-1]
[*]
这样,系统始终只处理3个对象:Shape对象、Drawingg对象、DP1或DP2对象。以下是C++语言实现,能够正确编译通过。
[C++代码]
class DP1
public:
static void draw_a_line(double x1,double y1,double x2,double y2)
//省略具体实现
;
class DP2
public:
static void drawline(double x1,double x2,double y1,double y2)
//省略具体实现
;
class Drawing
public:
(1) void drawLine(double x1,double y1,double x2,double y2)=0;
;
class V1Drawing:public Drawing
public:
void drawLine(double x1,double y1,double x2,double y2)
DP1::draw_a_line(x1,y1,x2,y2);
;
class V2Drawing:public Drawing
public:
void dra
-
[填空题]阅读以下函数说明和Java代码,
[说明]
现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例化矩形时,确定使用DPI还是DP2。
为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图7-1显示了各个类间的关系。
[图7-1]
[*]
这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是JAvA语言实现,能够正确编译通过。
[Java代码]
//DP1.Java文件
public class DPI
static public void draw_a_line(double x1,double y1,
double x2,double y2)
//省略具体实现
//DP2.java文件
public class DP2
static public void drawline(double x1,double y1,
double x2,double y2)
//省略具体实现
//Drawing.java文件
(1) public class Drawing
abstract public void drawLine(double x1,double y1,double x2,double y2);
//V1Drawing.java文件
public class V1Drawing extends Drawing
public void drawLine(double x1,double y1,double x2,double y2) <
-
[简答题]阅读下列说明和图表,回答问题1到问题3。
[说明]
在多道程序系统中,各个程序之间是并发执行的,共享系统资源。CPU需要在各个运行的程序之间来回地切换,这样的话,要想描述这些多道的并发活动过程就变得很困难。为此,操作系统设计者提出了进程的概念。
进程是具有独立功能的程序关于某个数据集合上的一次动态执行过程,是系统进行资源分配和调度的独立单位。
进程在生命消亡前处于且仅处于三种基本状态之一。运行态(Running):进程占有CPU,并在CPU上运行。就绪态(Ready):一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调度给其CPU时,立即可以运行)。等待态(Blocked):指进程因等待某种事件的发生而暂时不能运行的状态,即使CPU空闲,该进程也不可运行。指出如下进程状态转换图(图4-1)中“状态1”~“状态3”分别是什么状态。
[图4-1]
[*]
-
[简答题]实体间的联系有“一对一”、“一对多”和“多对多”,指出图2-2中各联系分别属于哪一种。