问答题[说明]分糖果问题是一个经典问题。问题描述如下:幼儿国有n(<20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有8个孩子,则第1个将原来的一半分给第2个,第2个将原有的一半分给第3个……第8个将原来的一半分给第1个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个小孩的初始数由键盘输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。[C程序]#include<stdlib.h>#include<stdio.h>boolallequall(intchild[],intn)//判断各小孩子手中的糖果是否相等for(inti=0;i<n-1;i++)if(child[i]!=child[i+1])returnfalse;//不相等返回假returntrue;//相等返回真constintMaxNum=20;//定义最大人数//主函数voidmain()intNum=0;int*child;int*child1;//构造两个相应大小的数组child代表小朋友现有的粮果数child1代表小朋友原来有的糖果数intTnum=0;inti=0;doprintf("Pelaseinputthenumberofthechildren:").,scanf("%d",if(Num>MaxNum)printf("ErrorNumber!!");while(Num>MaxNum);child=newint[Nmn];child1=newint[Num];for(i=0;i<Num;i++)//将数组赋值printf("InputNO.%dchild'scandynumbers:",i+1);scanf("%d",while((1))for(i=0;i<Num;i++)if((2))(3)Tnum++;for(i=0;i<Num;i++)child1[i]=child[i];//将child1赋值用来记忆原来小朋友的粮果数for(i=0;i<Nam;i++)(4)for(i=0;i<Num-1;i++)//用循环实现前一个小朋友粮果数加后一个小朋友粮果数的一半child[i]/=2;child[i]+=child1[i+1];child[Num-1]/=2;(5)printf("每个同学最后分到糖果数目是%d/n",child[1]);printf("老师分发出的糖果是%d/n",Tnum);图12-7是一种解决问题的流程图,请根据该流程图将对应C代码(n)处补充完整。
问答题【说明】下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。车库可为众多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同时借3辆车。每辆车借期7天:若有一辆车超期,则不可再借其他车。一辆车超期一天罚款250元。若一辆车超期3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价(包括折旧)的1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。【状态图1】【状态图2】
问答题[说明] 假设设A和B均为顺序表,A'和B'分别为A和B中除去最大共同前缀后的子表(例如,A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大的共同前缀为(x,y,y,z),在两表中除去最大共同前缀后的子表分别为A'=(x,z)和B'=(y,x,x,z)。若A'=B'=空表,则A=B;若A'=空表,而 B'!=空表,或者两者均不为空表,且A'的首先小于B'的首元,则A<B;否则A>B。 下面程序实现了比较A、B大小的算法。 [C程序] #include<stdio.h> #include<stdlib.h> typedef struct linknode int data; struct linknode *next; node: node *creatlist ( ) /*建立单链表*/ node*head, *r, *s; int x; head= (node *) malloc (sizeof (node)); /建立单链表的头结点head*/ r=head; printf ("输入系列整数,以O标志结束/n"); scanf ("%d", while (x!=O) /*x==O则退出while循环*/ s=(node*) malloc (sizeof (node)); s->data=x; r->next=s; s->next=NULL; r=s; scanf ("%d", r->next=NULL; s=head; (1) ; Free (s); return head;void subs ( ) node*p, *p1, *p2, *q, *heada, *headb; heada=creatlist ( ) ; headb=creatlist ( ) ; p=heada; p1=p; /*p1指向p所指结点的前一个结点,开始时均缀向头结点*/ while (p!=NULL ) q=headb; while (q!=NULL if ( (2) ) if (p==heada) (3) ; p1=heada; else if (p->next==NULL) p1->next=NULL; /*该结点为最后一结点,删除*/ else p1->next=p->next; p2=p->next; (4) ; free (p); (5) ; else /*p所指结点的元素不在B中,则直接下移p*/ p1=p; (6) ; p=heada; /*显示删除后的结果*/if (p==NULL) printf ("两集合机减的结果为空/n");else printf ("两集合相减的结果/n");while (p!=NULL) printf ("%d", p->data); p=p->next;void main ( ) subs ( ) ;
问答题[说明] 在学校中,存在以下关系:(a)一个系有若干学生,但一个学生只能在一个系;(b)一个学生可以选修多门课程,每门课程有若干学生选修;(c)每个学生所学的每门课程都有一个成绩。 该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。(a)表一:学生信息表STUDENT(STID,NAME,AGE,DEPTNO),其中,STID表示学号,NAME表示学生姓名,AGE表示年龄,DEPTNO表示系号。(b)表二:课程表COURSE(COID,NAME),其中,COID表示课程号,NAME表示课程名。(c)表三:成绩表SCORE(SCID,COID,GRADE),其中,SCID表示学号,COID表示课程号, GRADE表示成绩,成绩为空时表示这学期正在上的课程。
问答题阅读下列说明,回答问题1至问题3,将解答填入对应栏内。【说明】某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。【需求分析结果】1.登记参赛。球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。2.安排球队的训练信息。比赛组织者为球队提供了若干块场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如下表所示。系统记录训练场地安排的信息。球队名称场地名称训练时间解放军一号球场2008-06-09 14:00--18:00解放军一号球场2008-06-12 09:00--12:00解放军二号球场2008-06-11 14:00--1800山西一号球场2008-06-10 09:00--12:00 3.安排比赛。该赛事聘请专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。记录参赛球队名称、比赛时间、比分、比赛场地等信息,如下表所示。 A组:甲队—乙队场地名称比赛时间裁判比分解放军—北京一号球场2008-06-1715:00李大明天津—山西一号球场2008-06-1719:00胡学梅 B组:甲队—乙队场地名称比赛时间裁判比分上海—安徽二号球场2008-06-1715:00丁鸿平山东—辽宁二号球场2008-06-1719:00郭爱琪4.所有球员、教练和裁判可能出现重名情况。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下:1.实体联系图(图2-1)2.关系模式教练(教练编号,姓名,年龄)队员(队员编号,姓名,年龄,身高,体重,{{U}}(a){{/U}})球队(球队名称,代表地区,成立时间,{{U}}(b){{/U}})场地(场地名称,场地规模,位置)训练记录({{U}}(c){{/U}})裁判(裁判编号,姓名,年龄,级别)比赛记录({{U}}(d){{/U}})
问答题
阅读下列说明和数据流图,回答问题1至问题3。 [说明]
图书管理系统旨在用计算机对图书进行管理,包括图书的购入、借阅、归还以及注销。管理人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便掌握图书的流通情况。
系统要实现以下四方面的功能:购入新书、读者借书、读者还书以及图书注销。
(1)购入新书:需要为该书编制图书卡片,包括分类目录号、图书流水号(要保证每本书都有唯一的流水号,即使同类图书也是如此)、书名、作者、内容摘要、价格和购书日期等信息,写入图书目录文件中。
(2)读者借书:填写借书单,包括读者号、欲借图书分类目录号,系统首先检查该读者号是否有效,若无效,则拒绝借书,否则进一步检查该读者所借图书是否超过最大限制数,若已达到最大借阅数,则拒绝借书,否则读者可以借出该书,登记图书分类目录号、图书流水号、读者号和借阅日期等,写回到借书文件中去。
(3)读者还书:根据图书流水号,从借书文件中读出和该图书相关的借阅记录,表明还书日期,再写回借书文件中;如果图书逾期未还,则处以相应罚款。
(4)图书注销:将一些过时或无保留价值的图书注销,从图书文件中删除相关记录。
(5)流通查询:管理员可以对图书流通情况进行查询,包括某位读者、某种图书和全局图书,给出流通情况统计表。
以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图1-1是顶层数据流图,图1-2是第0层数据流图,图1-3是第1层数据流图。
[图1-1]
[图1-2] [图1-3]
[数据字典]
(1)数据流条目 图书管理要求=[入库单|借书单|还书单|注销单]
入库单=分类目录号+数量+书名+作者+内容摘要+价格+购书日期 借书单=读者号+{{U}}(d){{/U}}+借阅日期
还书单={{U}}(e){{/U}}+还书日期 (2)文件说明
文件名:目录文件 组成:{分类目录号+书名+作者+内容摘要+价格+入库日期+总数+库存数+{{U}}(f){{/U}}}
问答题阅读下列说明,根据要求回答问题1~问题3。
[说明]
某企事业单位资料室需要建立一个图书管理系统,初步的需求分析结果如下:
(1)资料室有图书管理员若干名,他们负责已购入图书的编目和借还工作,每名图书管理员的信息包括工号和姓名;
(2)读者可在阅览室读书,也可通过图书流通室借还图书,读者信息包括读者ID、姓名、电话和
E-mail,系统为不同读者生成不同的读者ID;
(3)每部书在系统中对应唯一的一条图书在版编目数据(CIP,以下简称书目),书目的基本信息包括ISBN号、书名、作者、出版商、出版年月,以及本资料室拥有该书的册数(以下简称册数),不同书目的ISBN号不相同;
(4)资料室对于同一书目的图书可拥有多册(本),图书信息包括图书ID、ISBN号、存放位置、当前状态,每一本书在系统中被赋予唯一的图书ID;
(5)一名读者最多只能借阅十本图书,且每本图书最多只能借两个月,读者借书时需由图书管理员登记读者ID、所借图书ID、借阅时间和应还时间,读者还书时图书管理员在对应的借书信息中记录归还时间;
(6)当某书目的可借出图书的数量为零时,读者可以对其进行预约登记,即记录读者ID、需要借阅的图书的ISBN号、预约时间。
某书目的信息如表7-13所示,与该书目对应的图书信息如表7-14所示。
{{B}}表7-13 数目信息{{/B}}
{{B}}书名{{/B}}
{{B}}作者{{/B}}
{{B}}出版商{{/B}}
{{B}}ISBN号{{/B}}
{{B}}出版年月{{/B}}
{{B}}册数{{/B}}
{{B}}经办人{{/B}}
《数据结构》
严蔚敏
吴伟民
清华大学出版社
ISBN7-302-02368-9
1997.4
4
01
{{B}}表7-14 图书信息{{/B}}
{{B}}图书ID{{/B}}
{{B}}ISBN号{{/B}}
{{B}}存放位置{{/B}}
{{B}}状态{{/B}}
{{B}}经办人{{/B}}
C832.1
ISBN7-302-02368-9
图书流通室
已借出
01
C832.2
ISBN7-302-02368-9
图书阅览室
不外借
01
C832.3
ISBN7-302-02368-9
图书流通室
未借出
01
C832.4
ISBN7-302-02368-9
图书流通室
已预约
01
系统的主要业务处理如下。
(1)入库管理:图书购进入库时,管理员查询本资料室的书目信息,若该书的书目尚未建立,则由管理员编写该书的书目信息并输入系统,然后编写并输入图书信息;否则,修改该书目的册数,然后编写并输入图书信息,对于进入流通室的书,其初始状态为“未借出”,而送入阅览室的书的状态始终为“不外借”。
(2)借书管理:读者借书时,若有,则由管理员为该读者办理借书手续,并记录该读者的借书信息,同时将借出图书的状态修改为“已借出”。
(3)预约管理:若图书流通室没有读者要借的书,则可为该读者建立预约登记,需要记录读者ID、书的ISBN号、预约时间和预约期限(最长为10天)。一旦其他读者归还这种书,就自动通知该预约读者。系统将自动清除超出预约期限的预约记录并修改相关信息。
(4)还书管理:读者还书时,则记录相应借还信息中的“归还时间”,对于超期归还者,系统自动计算罚金(具体的计算过程此处省略)。系统同时自动查询预约登记表,若存在其他读者预约该书的记录,则将该图书的状态修改为“已预约”,并将该图书ID写入相应的预约记录中(系统在清除超出预约期限的记录时解除该图书的“已预约”状态);否则,将该图书的状态修改为“未借出”。
(5)通知处理:对于已到期且未归还的图书,系统通过E-mail自动通知读者;若读者预约的书已到,系统则自动通过E-mail通知该读者来办理借书手续。
问答题
问答题 阅读以下说明,回答问题1至问题3,将解答写在对应栏内。
【说明】 下面是某医院信息管理系统中需要的信息。
科室:科名、科地址、科电话、医生姓名。 病房:病房号、床位号、所属科室名。
医生:姓名、职称、所属科室名、年龄、工作证号。 病人:病历号、姓名、性别、诊断、主管医生、病房。
其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可以负责多个病人的诊治,一个病人的主管医生只有一个。
问答题[说明]假设某大型商业企业由商品配送中心和连锁超市组成,其中商品配送中心包括采购、财务、配送等部门。为实现高效管理,设计了商品配送中心信息管理系统,其主要功能描述如下:1.系统接收由连锁超市提出的供货请求,并将其记录到供货请求记录文件。2.在接到供货请求后,从商品库存记录文件中进行商品库存信息查询。如果库存满足供货请求,则给配送处理发送配送通知;否则,向采购部门发出缺货通知。3.配送处理接到配送通知后,查询供货请求记录文件,更新商品库存记录文件,并向配送部门发送配送单,在配送货品的同时记录配送信息至商品配送记录文件。4.采购部门接到缺货通知后,与供货商洽谈,进行商品采购处理,合格商品入库,并记录采购清单至采购清单记录文件、向配送处理发出配送通知,同时通知财务部门给供货商支付货款。该系统采用结构化方法进行开发,得到待修改的数据流图如下图所示。
问答题[说明] 以下代码实现了当用户推出界面时,判断TextEdit中的文字是否发生改变,弹出对话框判断,让用户选择选择是否保存文件或取消退出界面操作。阅读下面代码,补充完整。 [代码7-1] Begin VB.Form Forml //...窗体描述(略) Begin VB.TextBox TextEdit Height = 1830 Left = 180 TabIndex = 0 Text = "TextEdit" Top = 360 Width = 3885 End //...窗体描述(略) End [代码 7-2] Dim txtchange As Boolean Dim myval As String Private Sub Form Load ( ) TextEdit.Text = "CIU, 中国软考联盟! txtchange = False End Sub [代码 7-3] Private Sub TextEdit_Change ( ) Static notchange As Boolean (1) (2) End Sub Private Sub Form_Unload ( Cancel As Integer ) Dim myval As String If (3) Then myval = MsgBox ( "保存文件的更改吗?", vbYesNoCancel, "提示信息" ) If (4) Then MsgBox "保存成功" End End If If (5) Then End If (6) Then Cancel = 1 End If End Sub
问答题【说明】
在一个航空公司的航班管理系统中,有以下一些事实。
(1)一个航班可能是一个或多个乘客的运输工具,每个乘客可能是一个或多个航班的旅客。
(2)一个且仅一个飞行员必须对每个航班负责,每个飞行员可能负责一个或多个航班。
(3)一个或多个飞行员必须对每个乘客负责,每个飞行员必须对一个或多个乘客负责。
现有飞行员的实体如下:
飞行员(飞行员编号,航班编号,姓名,工资,起飞地,到达地,飞行信用时间)
说明:飞行信用时间是一个特定的航班分配给一名飞行员,授权他可以驾驶管理这个航班。 【问题1】
实体“飞行员”是否符合1NF,如果不符合,如何将它规范化。
【问题2】
由问题1得到的实体“飞行员”是否符合2NF,如果不符合,如何将它规范化。
【问题3】
指出最后得到关系模式的候选码。
问答题 阅读以下说明和流程图(如图1所示),回答问题1至问题4。
【说明】 本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式
(A-(B*C+D)*E)/(F+G)) 的后缀表示为
ABC*D+E*-FG+/
为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下:
数组 IN[]存储中缀表达式; 数组
POLISH[]存储其后缀表达式; 数组 S[]是一个后进先出栈;
函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:{{B}}
表2{{/B}}
CHAR
PRIOR(XHAR)
*/+ -()
4321
问答题下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include<stdio.h>#include<malloc.h>#include<string.h>#include<conio.h>#defineN10typedefstructsscharnum[10];intorder;STU;STU*fun(STUa[],intm)STUb[N],*tt;inti,j,k;(1);for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++)for(i=j=0;i<N;i++)if((2))j=i;tt[k]=b[j];b[j].order=0;return(3);outresult(STUa[],FILE*pf)inti;for(i=0;i<N;i++)fprintf(pf,"No=%sMark=%d/n",a[i].num,a[i].order);fprintf(pf,"/n/n");main()STU[N]="A01",80,"A02",79,"A03",66,"A04",82,"A05",87,"A06",93,"A07",78,"A08",60,"A09",85,"A10",73;STU*p_order;inti,m;clrscr();printf("***TheOrigialdata***/n");outresult(a,stdout);printf("/nGivethenumeberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10)printf("/nGivethenumberofthestudetswhohavebetterscore:");scanf("%d",&m);p_order=fun(a,m);printf("***THERESULT***/n");printf("***Thetopstudents***/n");for(i=0;i<m;i++)printf("%s%d/n",p_order[i].num,p_order[i].order);free(p_order);
问答题假定Games表存储参赛情况,如下的SQL语句是委员会用于查询“队名为‘China’的各个运动员各自夺取得的总积分”的不完整语句,请在空缺处填入正确的内容。 SEl3ECT (1) FROM Games WHERE ANo (2) (SELECT ANo FROM (3) WHERE ATeam="China") GROUP BY ANo;
问答题[说明] ①为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员 radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。 ②为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序 Circle c; c. SetRadius(5); c. Print(); 将输出:The circle has radius of 5! ③完成友元函数void CompareR(Circle *c1,Circle *c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if - else结构完成。 输出结果如下: The circle has radus of 5 ! The circle has radius of 10 ! cl <c2 源程序文件test7_3, cpp 清单如下: #include < iostream, h > class Circle public: Circle( ) :radius(5) (1) void SetRadius(int r) radius = r; int GetRadius() return radius; (2) friend void CompareR(Circle * c1,Circle * c2); private: int radius; ; void CompareR(Circle * c! ,Circle * c2) (3) cout << "c1 > c2" << endl; else if ( (c1 -> GetRadius( )) == (c2 -> GetRadius( ))) tout < <"c1=c2' < < endl; else if ( (c1 -> GetRadius( )) < ( c2 -> GetRadius( ))) cout <<"c1<c2" <<endl; void main( ) Circle c1 c1. SetRadius(5) c1. Print( ) Circle c2(10); c2. Print( ) CompareR(
问答题【流程图】1. 【问题1】 上面程序的功能是什么?
问答题【说明】某公司要开发一个销售管理系统,该系统的主要功能是:处理客户和销售员送来的订单;工厂是根据订货安排生产的,交出货物同时开出发票,收到客户付款后,根据发票存根进行应收款处理。每张订单由订单号,若干头信息和订单细节组成。一张订单可定购多种产品,工厂对大宗订货给予优惠。每种产品都规定了不同订货数量的折扣。根据—上述要求公司的销售部王经理写下了以卜数据表结构:客户:(客户号,客户名,地址,电话)订单:(订单号,客户号,产品号,订货数,订货日期,交货日期,金额)应收账款:(客户号,订单号,发票号,应收金额,支付日期,支付金额,当前余额)产品描述:(产品号,产品名,单价,重量)折扣规则:(产品号,订货量,折扣)
问答题阅读以下某旅馆客房管理系统的算法说明和程序流程图,根据要求回答问题1~问题4。[算法说明]某旅馆共有N间客房。每间客房的房间号、房间等级、床位数及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。房间的状态值为0(空闲)或1(占用)。客房是以房间(不是床位)为单位出租的。程序流程图(见图6-21)所反映的算法是,根据几个散客的要求预订一间空房。程序的输入为:人数M,房间等级要求R(R=0表示任意等级都可以)。程序的输出为:所有可供选择的房间号。
问答题[说明]下面给出的是某房产管理系统的一套分层数据流图。其功能描述如下:(1)系统随时根据住房送来的入住单更新住户基本信息文件;(2)每月初系统根据物业管理委员会提供的月附加费(例如清洁费、保安费、大楼管理费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。住户交费时,系统输入交费凭证,核对后输出收据给住户;(3)系统定期向物业管理委员会提供住房分配表和交费情况表;(4)住户因分户或换房,在更新住户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分户或换房前的房租。以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图1是顶层数据流图,图2是第0层数据流图,图3是第1层数据流图,其中A是加工1的细化图,B是加工2的细化图。假定题中提供的顶层图是正确的,请回答下列问题。图1图2图3
