计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
软件设计师(中级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
问答题[说明] 以下JAVA程序设计了类CSet,使用同一个名称(set)的method来传入数据。仔细阅读[代码6-1)、[代码6-2]和[代码6-3]和相关注释,将程序补充完整。 [代码6-1] import java.io.*; class CSet { private int width; private int height; (1) public void set(String color) { col=color; //(a)可输入长方形的颜色 } public void set (iht w, int h) { width=w; //(b)可输入长方形的宽和高 height=h; } public void set (String color, int w, int h) { col=color; //(c)可输入长方形的颜色、宽和高 width=w; height=h; } public void show ( ) { System.out.println ("n/长方形的颜色为: "+col); System.out.println ("n/长方形宽为: "+width+" 长方形高为: "+height"); } } [代码6-2] public class hw8_3 { public static void main (String args[]) throws IOException { intw, h; //声明宽、长变量,并给予赋值 String color, k; CSet rect1; rect1=new CSet ( ); System.out.print ("/n请输入颜色:: "); color=input ( ); System.out.print ("请输入宽度:: "); k=input ( ); w=Integer.parseInt (k); System.out.print ("请输入高度:: "); k=input( ); h=Integer.parseInt (k); (2) //设置长方形的颜色 (3) //设置长方形的宽、高 rectl.show ( ); (4) //设置长方形的颜色和宽、高 rectl.show ( ); } [代码6-3] public static String input( ) throws IOException//输入函数 { String str; BufferedReader buf; (5) str=buf.readLine ( ) return str; } }
进入题库练习
问答题[说明](1)对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合a,b,c,d)及其权值2、7、4、5,可构造如图3-26所示的最优二叉树,以及相应的结构数组Ht(如表3-12所示,其中数组元素Ht[0]不用)。表3-12结构数组Ht数组下标chweightparentlchildrchild1a25002b77003c45004d5600566136180267结构数组Ht的类型定义如下:(2)用“0”或“1”标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用“0”(或“1”)标识该分支(示例见图3-26)。(3)若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序将相应标识依次排列,可得到由“0”、“1”组成的一个序列,称此序列为该叶子结点的前缀编码。例如图3-26所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。[函数说明1]函数voidLeafCode(introot,intn)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中,形参root为最优二叉树的根结点下标;形参n为叶子结点个数。在函数voidLeafCode(introot,intn)构造过程中,将Ht[p].weight域用做被遍历结点的遍历状态标志。[函数4.1][函数说明2]函数voidDecode(char(作图)buff,introot)的功能是:将前缀编码序列翻译成叶子结点的字符序列,并输出。其中,形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。[函数4.2]
进入题库练习
问答题阅读下列说明和流程图2-3,将应填入 (n) 的字句写在答题纸的对应栏内。 【说明】 下面的流程图描述了对8位二进制整数求补的算法。 该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。 例如:对二进制整数10101000求补的结果是01011000。 设8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的B1T[1]~BIT[8]中。例如,二进制整数10101000存放在数组BIT后,就有BIT[1]=0,BIT[2]=0,…,BIT[7] =0,BIT[8]=1。若流程图中存在空操作,则用NOP表示。 【流程图】 注:流程图中 (1) 处按“循环变量名:循环初值,增量,循环终值”格式描述。
进入题库练习
问答题【说明】 某城市电信局受理了许多用户申请在指定电话上开设长话业务。长话包括国内长途和国际长途。电信局保存了长话用户档案和长话业务档案。 长话用户档案的记录格式为 用户编码 用户名 用户地址  长话业务档案的记录格式为 电话号码 用户编码 国内长途许可标志 国际长途许可标志  电话用户每次通话的计费数据都自动地记录在电信局程控交换机的磁带上。计费数据的记录格式为 日期 电话号码 受话号码 通话开始时间 通话持续时间  该电信局为了用计算机自动处理长话收费以提高工作效率,开发了长话计费管理系统。该系统每月能为每个长话用户打印出长话缴费通知单。长话缴费通知单的记录格式为 用户名 用户地址 国内长途话费 国际长途话费 话费总额  流程图描述了该系统的数据处理过程。  该系统每天对原始的计费数据进行分类排序,并确定每个通话记录的通话类型(市话/国内长途/国际长途),再根据话费单价文件算出每个通话记录应收取的话费。因此,形成的日计费文件中,增加了两个数据项:通话类型和话费。该系统每日对日计费文件进行累计 (按电话号码和通话类型,对该类型的话费进行累计,得到该电话号码该通话类型的当月话费总计),形成月计费文件。  月计费文件经过长话出账处理形成长话账单文件。长话账单文件的记录格式为 月份 用户编码 电话号码 国内长途话费 国际长途话费 话费总额  长话账单文件经过处理5和处理6的处理后,就可以形成长话缴费通知单。1. 【问题1】 (1)请说明流程图1中的文件F0、F1分别是哪个文件。 (2)处理1和处理5分别按照哪些数据项进行分类?
进入题库练习
问答题[说明] 以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。 [JAVA代码] //定义自己的异常类 class CCircleException extends Exception { } // 定义类 CCircle class CCircle { private double radius; public void setRadius ( double r ){{U}} (1) {{/U}} { if ( r<0 ) { {{U}} (2) {{/U}} } else {{U}} (3) {{/U}} } Public void show ( ) { System. out. println ( "area="+3.14*radius*radius ); } } public class ciusample { public static void main ( String args[] ) { CCircle cir=new CCircle( ); {{U}} (4) {{/U}}{ cir. setRadius ( -2.0 ) } {{U}} (5) {{/U}} { System. out. println ( e+" throwed" ) ; } cir. show( ) ; } }
进入题库练习
问答题[说明]栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(StackTop),而另一端称为栈底(StackBottom)。栈的基本操作包括创建栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否已满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存储,如下图所示。以下C代码采用链式存储结构实现一个整数栈操作。[C程序]typedefstructList{intdata;//栈数据structList*next;//上次入栈的数据地址}LiSt;typedefstructStack{List*pTop;//当前栈顶指针}Stack;Stack*NewStack(){return(Stack*)calloc(1,sizeof(Stack));)intIsEmpty(Stack*S)//判断栈S是否为空栈{If(______)return1;return0;}intTop(Stack*S)//获取栈顶数据。若栈为空,则返回机器可表示的最小整数{if(IsEmpty(S))returnINT_MIN;return______;}VoidPush(Stack*S,inttheData)//将数据theData压栈{LiSt*newNode;newNode=(List*)calloc(1,Sizeof(List));newNode→data=theData;newNode→next=S→pTop;S→Top=______;}VoidPop(Stack*S)//弹栈{List*lastTop;If(IsEmpty(S))return;lastTop=S→pTop;S→pTop=______;Free(lastTop);}#defineMD(a)a<<2intmain(){inti;Stack*myStack;myStack=NewStack();Push(myStack,MD(1));PuSh(myStack,MD(2));Pop(myStack);Push(myStack,MD(3)+1);while(!IsEmpty(myStack)){printf("%d",Top(myStack));Pop(myStack);}return();}以上程序运行时的输出结果为______。
进入题库练习
问答题[说明] 操作系统中,死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 面对死锁问题有两个解决方案:预防死锁和避免死锁。 预防死锁是一种较简单和直观的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或多个,以此来预防死锁的发生。预防死锁由于较易实现,已被广泛应用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量的降低。 避免死锁同样是属于事先预防的策略,但它无须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。 银行家算法(Banker's algorithm)是Dijkstra于1965年提出的一个经典的避免死锁的算法。形象地描述银行发放贷款不能使有限可用资金匮乏而导致整个银行无法运转的思路,也就是说每次请求贷款,银行要考虑他能否凭着贷款完成项目,并还清贷款使银行运转正常。令Request(i)是进程P(i)请求向量,如果Request(i)[j]=k则进程P(i)希望请求j类资源k个。具体算法步骤如下: (1)如果Request(i)>Need(i)则出错(请求量超过申报的最大量),否则转到(2); (2)如果Request(i)>Available则P(i)等待,否则转(3); (3)系统对P(i)所请求的资源实施试探分配,并更改数据结构中的数值; (4) Available = Available - Request(i): Allocation(i) = Allocation(i) + Request(i); Need(i) = Need(i) - Request(i); (5)执行安全性算法,如果是安全的,则承认试分配,否则废除试分配,让进程P(i)继续等待。 所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次运行完成,这种进程序P1, P2, …, Pn就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。
进入题库练习
问答题[说明]某旅馆共有N间客房。每间客房的房间号、房间等级、床位数及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。房间的状态值为0(空闲)或1(占用)。客房是以房间(不是床位)为单位出租的。本算法根据几个散客的要求预订一间空房。程序的输入为人数M、房间等级要求R(R=0表示任意等级都可以)。程序的输出为所有可供选择的房间号。
进入题库练习
问答题阅读下列说明以及图10-7和图10-8,回答问题1、问题2和问题3。[说明]某高等院校的教学管理具有选课管理和成绩管理两大功能。选课管理主要完成以下工作:(1)录入与生成新学期课程表;(2)学生选课注册;(3)查询,学生、教师、教学管理员可以查询课程表,获得课程信息、学生选课信息和学生、教师信息;(4)选课注册信息的统计与报表生成。成绩管理主要的功能为:(1)成绩录入:教学管理员录入学生考试成绩;(2)成绩查询:教师、教学管理员可以查询学生考试成绩。。学生只允许查询自己的考试成绩,不允许查询他人的成绩;(3)成绩统计与报表生成:教学管理员进行成绩统计,打印统计报表。把学生选课注册信息传送给财务系统,以便计算学生应交纳的费用。根据需要,系统设计的用例有“选课管理”、“成绩管理”、“查询课程信息”、“选课注册”、“管理开设课程”等用例。其中部分用例说明如下:“查询课程信息”:学生、教师或教学管理员启动查询课程信息时,该用例开始运行。根据输入的查询要求(查询主题或关键字),显示有关的课程信息;“选课注册”。当学生登录进行选课注册时,该用例开始运行,它提供了选择课程、注册、修改注册、删除注册等功能。学生登录需要用户标识(ID)和口令;“管理开设课程”。当教学管理员登录系统进行产生选课信息操作时,该用例开始运行。它首先检查用户标识(ID)和口令,然后从数据库中取出学生的选课注册数据,按照要求进行分类统计,生成选课注册报表。活动者“学生”与用例“选课注册”的交互关系如下:当“学生”登录系统进入选课注册活动时,首先要输入用户标识(ID)和口令,经系统的“注册表单”接口对象验证,如果正确无误,则“学生”可以进行查询活动或选课活动,否则拒绝进入。若“学生”发出“查询”请求,系统的“选课注册表单”接口对象响应信息给“学生”,及发送增加或删除学生选课数据的消息。“开设课程”对象响应该消息,找出数据库中的相关数据,增加或删除学生的姓名和所选的课程名,或做相应的修改,并把增加或删除学生课操作成功或失败的信息反馈给“选课注册表单”接口对象,“选课注册表单”接口对象再反馈给“学生”。如果“学生”按下“确认”键,则选课操作得到确认,发出提交请求。“选课注册表单”接口对象响应该请求,并发出“存储”消息。“开设课程”对象响应“存储”消息,进行数据库存储操作,选课数据存入数据库。若“学生”结束选课,发出“退出”系统请求,“注册表单”接口对象响应请求,关闭系统。图10-7为系统的顶层UML用例图。图10-8为选课注册顺序图。
进入题库练习
问答题[说明]某汽车停车场欲建立一个信息系统,已经调查到的需求如下。1.在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器等,其示意图见如图3-21所示。2.当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。3.在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。4.当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。5.系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。根据上述描述,采用面向对象方法对其进行分析与设计,得到如表3-11所示的类/用例/状态列表,如图3-22所示的用例图,如图3-23所示的初始类图以及如图3-24所示的描述入口自动栏杆行为的UML状态图。表3-11类/用例/状态列表用例名说明类名说明状态名说明Carentry汽车进入停车场CentralComputer停车场信息系统Idle空闲状态,汽车可以进入停车场Carexit汽车离开停车场PaymentMachine付款机器Disable没有车位ReportStatistics记录停车场的相关信息CarPark停车场,保存车位信息AwaitEntry等待汽车进入Barrier自动护栏AwaitTicketTake等待打印停车卡Carentrywhenfull没有车位时,汽车请求进入停车场EntryBarrier入口的护栏AwaitEnable等待停车场内有空闲车位ExitBarrier出口的护栏1.[问题1]根据说明中的描述,使用表3-11给出的用例名称,给出图3-22中U1、U2和U3所对应的用例。
进入题库练习
问答题【说明】有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其他类继承过来的边框特性可以被多个子类的实例所使用。但这种方法不够灵活,因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加边框。我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。它将客户请求转发给该组件,并且可能在转发前后执行一些额外的动作(例如画二个边框)。透明性使得你可以递归地嵌套多个装饰,从而可以添加任意多的功能。装饰对象结构模式的意图就是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子类更为灵活。其示意类图如图13-22所示。程序代码13-5是该模式的一个示例,说明了如何实现用户接口装饰,函数的实现全部省略。程序中定义了VisualComponent的一个子类Decorator,我们将生成Decorator的子类以获取不同的装饰。VisualComponent类是一个描述可视对象的抽象类,它描述了绘制和事件处理的接口。Decorator的子类定义了特殊的装饰功能,BorderDecorator子类给可视组件添加一个边框,ScrollDecorator给可视组件添加滚动功能。【程序代码13-5】(1);classWindowpublic:roidSetContents(VisualComponent*contents);;//VisualComponent类是一个描述可视对象的抽象类classVisllalComponentpublic:VisualComponent();(2)voidDraw();VirtualvoidResize();;classDecorator:publicVisualComponentpublic:Decorator()//…;Decorator(VisualComponent*vcom)//…;virtualvoldDraw();virtualvoldResize();private:/*Decorator装饰由VisualComponent的指针实现,其在Decorator的构造函数中初始化*/VisualComponent(3);;voldDecorator::Draw()(4);//缺省实现voidDecorator::Resize()component->Resize();//缺省实现//BorderDecorator子类为它所包含的组件添加一个边框classBorderDecorator:publicDecoratorpublic:BorderDecorator(VisualComponent*vcom,intborderWidth)//…;VirtualVoidDraw();private:voidDrawBorder(int);private:intborderWidth;;voidBorderDecorator::Draw()Decorator::Draw();DrawBorder(_width);VoidBorderDecorator::DrawBorder(intWidth)//…)VoidWindow::SetConterlts(VlsualComponent*contents)//…//SerollDecorat给可视组件添加滚动功能classScroliDecoratOr:publicDecoratorpublic:ScrollDecorator(VlsualComponent*vcom)//…;//…);classTextView:publicVisualComponent//…;voidmain(void)//创建一个正文视图以及放入这个正文视图的窗口Window*window=newWindow;TcxtView*textView=newTextView;//TextView是一个VisualComponent,它可以放入窗口中window->SetContents(textView);//得到一个有边界的和可以滚动的TextView,边界宽为1window->SetContents((5));
进入题库练习
问答题[说明] 冒泡排序算法的基本思想是:对于无序序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要进行众(1≤k≤n)趟冒泡操作,冒泡排序的结束条件是在某一趟排序过程中没有进行数据交换。若数据初态为正序时,只需1趟扫描,而数据初态为反序时,需进行n-1趟扫描。在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在传统的冒泡排序算法及近年的一些改进的算法中[2,3],只记录一趟扫描有无数据交换的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。 局部冒泡排序的基本思想是:对于N个待排序数据组成的序列,在一趟从前向后扫描待排数据序列时,两两比较相邻数据,若反序则对后一个数据作一趟前向的局部冒泡排序,即用冒泡的排序方法把反序对的后一个数据向前排到适合的位置。扫描第—对数据对,若反序,对第2个数据向前冒泡,使前两个数据成为,有序序列;扫描第二对数据对,若反序,对第3个数据向前冒泡,使得前3个数据变成有序序列;……;扫描第i对数据对时,其前i个数据已成有序序列,若第i对数据对反序,则对第i+1个数据向前冒泡,使前i+1个数据成有序序列;……;依次类推,直至处理完第n-1对数据对。当扫描完第n-1对数据对后,N个待排序数据已成了有序序列,此时排序算法结束。该算法只对待排序列作局部的冒泡处理,局部冒泡算法的 名称由此得来。 以下为C语言设计的实现局部冒泡排序策略的算法,根据说明及算法代码回答问题1和问题2。 [变量说明] #define N=100 //排序的数据量 typedef struct //排序结点 int key; info datatype; ...... node; node SortData[N]; //待排序的数据组 node类型为待排序的记录(或称结点)。数组SortData[]为待排序记录的全体称为一个文件。key是作为排序依据的字段,称为排序码。datatype是与具体问题有关的数据类型。下面是用C语言实现的排序函数,参数R[]为待排序数组,n是待排序数组的维数,Finish为完成标志。 [算法代码] void Part-BubbleSort (node R[], int n) int=0 ; //定义向前局部冒泡排序的循环变量 //暂时结点,存放交换数据 node tempnode; for (int i=0;i<n-1;i++) ; if (R[i].key>R[i+1].key) (1) while ( (2) ) tempnode=R[j] ; (3) R[j-1]=tempnode ; Finish=false ; (4) // end while // end if // end for // end function1.问题1 阅读下列函数说明和C代码,将应填入 (n) 处的字句写在的对应栏内。
进入题库练习
问答题[说明] 某学校建立了一个网上作业提交与管理系统,基本功能描述如下。 (1)账号和密码。任课老师用账号和密码登录系统后,提交所有选修学生的名单。系统自动为每个选修学生创建登录系统的账号和密码。 (2)作业提交。选修学生使用账号和密码登录系统后,可以向系统申请所选课程的作业。系统首先检查学生的当前状态,如果该选修学生还没有做过作业,则从数据库服务器申请一份作业。若申请成功,则显示需要完成的作业。学生需在线完成作业,单击[提交]按钮上交作业。 (3)在线批阅。系统自动在线批改作业,显示作业成绩,并将该成绩记录在作业成绩统计文件中。
进入题库练习
问答题【说明】 C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在程序6中定义了相应的类模板,使得对厂任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。 #include<iostream.h> template <class T> class Array; template <class T> class ArrayBody friend (1) T* tpBody; int iRows, iColumns, iCurrentRow; ArrayBody (int iRsz, int iCsz) tpBody = (2) iRows = iRsz; iColumns =iCsz; iCurrentRow =-1; public: T row_error=column_error=false; try if (iCurrentRow < 0 || iCurrentRow >=iRows) row_error=true; if (j < 0 || j >=iColumns) column_error=true; if ( row_error==true || column_error == true) (3) catch (char) if (row_error==true) cerr << "行下标越界[" << iCurrentRow << "] "; if (column_error== true ) cerr << "列下标越界[" <<j << "]"; cout << "/n"; return tpBody[iCurrentRow * iColumns +j]; ; ~ArrayBody ( ) delete[] tpBody; ; template <class T> class Array ArrayBody<T> tBody; public: ArrayBody<T> Array (int iRsz, int iCsz) : (5) ; void main() Array<int>a1(10,20); Array<double>a2(3,5); int b1; double b2; b1=a1[-5][10]; //有越界提示:行下标越界[-5] b1=a1[10][15]; //有越界提示:行下标越界[10] b1=a1[1][4]; //没有越界提示 b2=a2[2][6]; //有越界提示:列下标越界[6] b2=s2[10][20]; //有越界提示:行下标越界[10]列下标越界[20] b2=a2[1][4]; //没有越界提示
进入题库练习
问答题[说明]现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如下图所示。[C++程序]#include<list>#include<iostream>#include<string>usingnamespacestd;elassAbstractFile{protected:stringname;//文件或目录名称public:voidprintName(){cout<<name;)//打印文件或目录名称virtualvoidaddChild(AbstractFile*file)=0;//给一个目录增加子目录或文件virtualvoidremoveChild(AbstractFile*file)=0;//删除一个目录的子目录或//文件virtuallist<AbstractFile*>*getChildren()=0;//获得一个目录的子目录或文件};classfile:publicAbstractFile{public:File(stringname){______=name;}voidaddChild(AbstractFile*file){return;}voidremoveChild(AbstractFile*file){return;}______getChildren(){return______;}};classFolder:publicAbstractFile{private:list<AbstractFile*>childList://存储子目录或文件public:Folder(stringname){______=name;}voidaddChild(AbstractFile*file){childList.pushback(file);}voidremoveChild(AbstractFile*file){childList.remove(file);}list<AbstractFile*>*getChildren(){return______;}};voidmain(){//构造一个树形的文件/目录结构AbstractFile*rootFolder=newFolder("C:\\");AbstractFile*compositeFolder=newFolder("composite");AbstractFile*windowsFolder=newFolder("windows");AbstractFile*file=newFile("TestCompositejava");rootFolder→addChild(compositeFolder);rootFolder→addChild(windowsFolder);compositeFolder→addChild(file);}
进入题库练习
问答题 【说明】 设有下列关于图书借阅系统的E—R图。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表: CREATE TABLE Readers (Rao CHAR(6) PRIMARY KEY, Rname CHAR(20) NOT NULL, Raddress CHAR(200), Rphone CHAR(15)); CREATE TABLE Books (Brio CHAR(6) PRIMARY KEY, Rname CHAR(50) NOT NULL); CREATE TABLE Administrators (Ano CHAR(6) PRIMARY KEY, Aname CHAR(20) NOT NULL); CREATE TABLE Borrows (Rno CHAR(6) NOT NULL, Bno CHAR(15) NOT NULL, Ano CHAR(6) NOT NULL, Bdate DATE, Rdate DATE, PRIMARY KEY(Rno,Bno,Ano), FOREGIN KEY(Rno) REFERENCE Readers(Rno), FOREGIN KEY(Bno) REFERENCE Book(Bno) FOREGIN KEY(Ano) REFERENCE Administrators(Ano)); CREATE TABLE Readers (Rao CHAR(6) PRIMARY KEY, Rname CHAR(20) NOT NULL, Raddress CHAR(200), Rphone CHAR(15)); CREATE TABLE Books (Brio CHAR(6) PRIMARY KEY, Rname CHAR(50) NOT NULL); CREATE TABLE Administrators (Ano CHAR(6) PRIMARY KEY, Aname CHAR(20) NOT NULL); CREATE TABLE Borrows (Rno CHAR(6) NOT NULL, Bno CHAR(15) NOT NULL, Ano CHAR(6) NOT NULL, Bdate DATE, Rdate DATE, PRIMARY KEY(Rno,Bno,Ano), FOREGIN KEY(Rno) REFERENCE Readers(Rno), FOREGIN KEY(Bno) REFERENCE Book(Bno) FOREGIN KEY(Ano) REFERENCE Administrators(Ano)); 为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只需写出英文名即可。 【系统E-R图】
进入题库练习
问答题【说明】某高校要设计一个教学管理数据库系统。通过调查,设计者了解到学生每学期按照事先安排的课程计划开始学习。每门课程由一名教师讲授;一个教师可以讲授多门课程;每名学生可以选修多门课程;学期结束后通过考试,教师登记每门课程、每名学生的成绩,并得到确认后存档。数据库工程师风清扬设计了如图13-20所示的E-R图。【问题1】把该E-R图中的实体和联系转化为相应的关系模式,并指出其主码、候选码以及外码(若无外码也须指出)。【问题2】现要查询出所有的没有学生选修的课程的全部信息,请写出相应的SQL语句。注意,要查询出符合条件的课程的全部信息。【问题3】现要查询出所有选修了教师号为'001'的老师所授课程的学生的学号与姓名,请写出相应的SQL语句。
进入题库练习
问答题[说明] 以下C语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下: 7 6 5 16 8 1 4 15 9 2 3 14 10 11 12 13 程序的变量说明如下: x1:矩阵上边界; x2:矩阵下边界; y1:矩阵左边界; y2:矩阵右边界; s:数组元素升降标记,s等于1为升,s等于-1为降; a[]:存放矩阵元素的数组。 仔细阅读C语言程序源码,将{{U}} (n) {{/U}}处的语句补充完整。(注:每处仅一个语句) [C程序] #include<stdio.h> void main ( ) { const int N=20; int i=0,j=0,a[N][N],n; int m,x1,x2,y1,y2,s; while (1) { Printf ("/ninput matrix row N( N>=2): "); scanf ("%d", printf ("/n"); if (n>=2) break; } m=n*n; x1=0; y1=0; x2=n; y2=n; if(n%2==0) {j=n-1; y2=n-1; s=1;} else {i=n-1; y1=1; s=-1; } while (1) { if (s==1) { for (i; i<x2; i++) a[i][j]=m--; i--; j--; {{U}} (1) {{/U}} for (j;j>=y1;j--) a[i][j]=m--; j++; i--; y1++; {{U}} (2) {{/U}} } else { for (i;i>=x1;i--) a[i][j]=m--; i++; j++; {{U}}(3) {{/U}} for (j;j<y2;j++) {{U}}(4) {{/U}} {{U}}(5) {{/U}} i++; {{U}}(6) {{/U}} S=i; } if (m<1) break; } for (i=O;i<n; i++) { for (j=O;j<n;j++) printf ("%6d",a[i][j]); printf ("/n"); } printf ("/n"); }
进入题库练习
问答题【说明】A公司决定开发一套公共交通自动售票系统,系统要求如下所述。(1)乘客能按以下3步操作购票:选定目的地,投入钱币,获得一张票。(2)并且仅当乘客选定目的地后,系统才接收投钱;每次投入的钱只购买一张票。(3)只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票。(4)如需找钱,则在出票的同时应退还多余的钱。(5)如果乘客投入的钱不够票价,或者票库中没有所需要的票时,系统将全额退钱,并允许乘客另选目的地,继续购票。(6)出票前乘客可以单击“取消”按钮取消购票,系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票。(7)出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用“”形式注明。该公司还制定了一个过程启动表,用以表明状态迁移图中的4个动作与转换图中的4个过程之间的“启动”关系,即说明哪个动作将启动哪个过程。用1表示启动,用0表示不启动。启动的过程将根据获得的输入数据产生输出数据,未唐动的过程则不会产生输出数据,该表中没有列出的过程,其执行与否与事件无关。【问题1】转换图中缺少哪3条数据流?请指明每条数据流的名称、起点和终点。【问题2】在状态迁移图中,a、b、c分别表示什么事件?请用转换图中给出的事件名解答。【问题3】在过程启动表中,d、e处应填什么?请分别用4位二进制码表示。
进入题库练习
问答题请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include<stdio.h> #include<conio.h> int m; void fun(char*s) { int i=0,j=0; char *p=s; while(*(p+i)) { if(*(p+i)>='A'&&*(p+i)<='Z') { {{U}}(1) {{/U}}; } {{U}}(2) {{/U}}; } s[j]='/0'; {{U}}(3) {{/U}}; } main() { char str[80]; clrscr(); printf("/nEnter a string:"); gets(str); printf("/n/nThe string is:/%s/n",str); fun(str); printf("/n/nThe string of changing is: /%s/n",str); printf("/n/nThe length of changed strtng is:/%d/n",m); }
进入题库练习