[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷48及答案与解析.doc
《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷48及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷48及答案与解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 48及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和图,回答问题 1至问题 3,将解答填入对应栏内。 说明 某汽车数字仪表系统将完成下述功能: (1)通过模一数转换,实现传感器和微处理器的接口。 (2)在发光二极管面板上显示数据。 (3)指示速度 (mph)、行驶里程、油耗 (mpg)等。 (4)指示加速或减速。 以下是经分析得到的数据流图,有些地方有待填充,假定顶层数据流图是正确的。图 1-1是顶层数据流图,图 1-2是第 0层 数据流图,图1-3是第 1层数据流图,其中 A是加工 1的细化图, B是加
2、工 2的细化图。图中, sps表示转速 sps的瞬时变化值,若 sps 0则汽车加速, sps 0则减速, sps=0则匀速。假定题中提供的顶层图是正确的,请回答下列问题。 图 1-1 图 1-2 图 1-3 1 第 0层数据流图 (图 1-2)中有一条缺失的数据流,请指出该数据流的起点和终点。 加工 1的细化图 (图 1-3中的 A)中有一条缺失的数据流,请指出该数据流的起点和终点。 2 加工 2的细化图 (图 1-3中的 B)中有一条 错误的数据流,请指出该数据流的起点或终点 (若可以,指出两者 )。 3 小说明是用来描述加工的。小说明的描述方法有哪些 ?请分别用这些描述方法描述加工 1.
3、2。 3 阅读下列说明和 E-R图,回答问题 1至问题 3,将解答填入对应栏内。 说明 设有下列关于学生成绩管理系统的 E-R图 (见图 2-1)。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列 SQL语言建立了基本表: CREATE TABLE STUDENT(SNo CHAR(6)NOT NULL UNIQUE, SName CHAR(20), Sex CHAR(1), Dept CHAR(20), Age SMALLINT); CREATE TABLE COURSE(CNo CHAR(6)NOT NULL UNIQUE, CName CHAR(20
4、), Hour SMALLINT, Credit SMALLINT); CREATE TABLE SC (SNo CHAR(6), CNo CHAR(6), GRADE SMALLINT, PRIMARY KEY (SNo, CNo); 为了答题的方便,图中的实体和属性同时给 出了中英文两种名字,回答问题时只须写出英文名即可。 填充下列 SQL程序 5.1 5.4中的 (1) (6),使它们分别完成以下查询功能: 程序 5.1:检索选修所有课程的学生姓名。 程序 5.2:给出全体学生人数。 程序 5.3:按学号给出每个学生的平均成绩。 程序 5.4:按学号给出每个学生选修课程的门数。 程序 5
5、.1 SELECT SName FROM STUDENT WHERE (1) (SELECT FROM COURSE WHERE (2) (SELECT * FROM SC WHERE (3) ) 程序 5.2 SELECT (4) FROM STUDENT 程序 5.3 SELECT (5) FROM SC GROUP BY SNO 程序 5.4 SELECT (6) FROM SC GROUP BY SNO 4 (1) 5 (2) 6 (3) 7 (4) 8 (5) 9 (6) 9 阅读以下说明和程序流程图,将应填入 (n)处的字句写在对应栏内。 说明 当一元多项式 中有许多系数为零时,可
6、用一个单链表来存储,每个节点存储一个非零项的指受和对应系数。 为了便于进行运算 ,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且各节点按指数递减顺序存储。例如:多项式8x5-2x2+7的存储结构为: 流程图图 3-1用于将 pC(Node结构体指针 )节点按指数降序插入到多项式 C(多项式POLY指针 )中。 流程图中使用的符号说明如下: (1)数据结构定义如下: #define EPSI 1e-6 struct Node /*多项式中的一项 */ double c; /*系数 */ int e; /*指数 */ Struct Node *next; ; typedef struc
7、t /*多项式头节点 */ int n; /*多项式不为零的项数 */ struct Node *head; POLY; (2)Del(POLY *C, struct Node *p)函数,若 p是空指针则删除头节点,否则删除 p节点的后继。 (3)fabs(double c)函数返回实数C的绝对值。 图 3-1 10 (1) 11 (2) 12 (3) 13 (4) 14 (5) 14 阅读下列说明和 C程序,将应填入 (n)处的字句写在对应栏中。 说明 借助一个栈结 构,可实现二叉树的非递归遍历算法。 InOrderTraverse数实现中序非递归遍历,遍历 过程如下: 若不是空树,根节点
8、入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素 (根节点 ),进入该节点的右子树,继续直到遍历完成。 函数中使用的预定义符号如下: typedef struct BiTNode int data; struct BiTNode *iChiid, *rChiid; BiTNode, *BiTree; typedef struct SNode/*链栈的节点类型 */ BiTree elem; struct SNode *next; SNode; 函数 int InOrderTraverse(BiTree root) BiTree P; SNode *q, *stop=NULL; /*不
9、带头节点的单链表作为栈的存储结构 */ P=root; while(p !=NULL | stop !=NULL) if( (1) ) /*不是空树 */ q=(SNode*)malloc(sizeof q); if(q=NULL)return-1; /*根节点指针入栈 */ (2); q- elem=P; stop=q; P=(3); /*进入根的左子树 */ else q=stop; (4); /*栈顶元素出栈 */ printf(“%d|, q- elem- data); /*防问根节点 */ P=(5); /*进入 根的右子树 */ free(q); /*释放原栈顶元素 */ /*if
10、*/ /*while*/ return 0; /*InOrderTraverse*/ 15 (1) 16 (2) 17 (3) 18 (4) 19 (5) 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 19 阅读下列函数说明和 C代码,将应填入 (n)处的字句写上。 说明 若要在 N个城市之间建立通信网络,只需要 N-1条线路即可。如何以最低的经济代价建设这个网络,是一个网的最小生成树的问题。现要在 8个城市间建立通信网络,其问拓扑结构如图 5-1所示,边表示城市间通信线路,边上标示的是建立该线路的代
11、价。 图 5-1 无向图用邻接矩阵存储,元素的值为对应的权值。考虑到邻接矩阵是对称的且对角线上元素均为0,故压缩存储,只存储上三角元素 (不包括对角线 )。 现用 Prim算法生成网络的最小生成树。由网络 G=(V, E)构造最小生成树 T=(U, TE)的 Prim算法的基本思想是:首先从集合 V中任取一顶点放 入集合 U中,然后把所有一个顶点在集合 U里、另一个顶点在集合 V-U里的边中,找出权值最小的边 (u, v),将边加入 TE,并将顶点 v加入集合 U,重复上述操作直到 U=V为止。 函数中使用的预定义符号如下: #define MAX 32768 /*无穷大权,表示顶点间不连通
12、*/ #define MAXVEX 30 /*图中顶点数目的最大值 */ typedef struct int startVex, stopVex; /*边的起点和终点*/ float weight; /*边的权 */ Edge; typedef struct char vexsMAXVEX; /*顶点信息 */ float arcsMAXVEX*(MAXVEX-1)/2; /*邻接矩阵信息,压缩存储 */ int n; /*图的顶点个数 */ Graph; 函数 void PrimMST(Graph*pGraph, Edge mst) int i,j,k,min,vx,vy; float w
13、eight, minWeight; Edge edge; for(i=0; i pGraph- n-1;i+) msti.StartVex=0; msti.StopVex=i+1; msti.weight=pGraph- arcsi; for(i=0; i (1); i+)/*共 n-1条边 */ minWeight=(float)MAX; min=i; /*从所有边(vx, vy)中选出最短的边 */ for(j=i; j pGraph- n-1; j+) if(mstj.weightminWeight) minWeight=(2); min=j; /*mstminl是最短的边 (vx, v
14、y),将mstmin加入最小生成树 */ edge=mstmin; mstmin=msti; msti=edge; vx=(3);/*vx为刚加入最小生成树的顶点下标 */ /*调整 msti+1到 mstn-1*/ for(j=i+1; j pGraph- n-1; j+) vy=mstj.StopVex; if( (4) )/*计算 (vx, vy)对应的边在压缩矩阵中的下标 */ k=pGraph- n*vy-vy*(vy+1)/2+vx-vy-1; else k=pGraph- n*vx-vx*(vx+1)/2+vy-vx-1; weight(5); if(weightmstj.wei
15、ght) mstj.weight=weight; mstj.StartVex=vx; 20 (1) 21 (2) 22 (3) 23 (4) 24 (5) 24 阅读以下说明和 C+代码,将应填入 (n)处的字句写上。 说明 现有一个显示系统,要显示的图形有线 Line、矩形 Square,抽象出一个 Shape类 (接口 ),有方法显不 display()。 需要新增图形 Circle,又已知有类 XXCircle实现了所需要实现的功能:显示 displayIt()。为了继承自 shape以提供统一接口,又不希望从头开发代码,希望使用 XXCircle。这样将 XXcircle作为 Circ
16、le的一个属性,即 Circle的对象包含一个 XXCircle对象。当一个 Circle对象被实例化时,它必须实例化一个相应的 XXCircle对象: Circle对象收到的做任何事的请求都将转发给这个 XXCircle对象。通过这种称为 Adapter模式, Circle对象就可以通过 “让 XXCircle做实际 工作 ”来表现自己的行为了。图 6-1显示了各个类间的关系。以下是 C+语言实现,能够正确编译通过。 图 6-1 C+代码 class Shape public: (1) void display()=0; ; class Line: public Shape/省略具体实现 ;
17、 class Square: public Shape/省略具体实现 ; class XXCircle public: void displayIt() /省略具体实现 /省略其余方法和属性 ; class Circle: public Shape private: XXCircle *pxc; public: Circle(); void display(); ; Circle:Circle() pxc=(2); void Circle: display() pxc- (3); class Factory public: (4) getshapeInstance(int type)/生成特定
18、类实例 switch(type) case 1: return new Square; case 2: return new Line; case 3 : return new Circle; default: return NULL; ; void main(int argc, char*argv) if(argc !=2) cout “error parameters!“ endl; return; int type=atoi(argv1); Factory factory; Shape*s=factory. (5); if(s=NULL) cout “Error get the inst
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 设计师 下午 应用技术 试题 模拟 48 答案 解析 DOC
