首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
阅读下列说明和数据流图,回答问题1至问题3。 【说明】 图书管理系统旨在用计算机对图书进行管理,包括图书的购入、借阅、归还及注销。管理人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书...
查看本题答案
包含此试题的试卷
中级软件设计师《问答集》真题及答案
点击查看
你可能感兴趣的试题
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内[说明]下面给出的是某房产管理系统的一套分
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某供销系统接受顾
试题二 阅读以下关于结构化软件系统建模的叙述在答题纸上回答问题1至问题3某公司拟开发一个商
试题二 阅读以下关于结构化软件系统建模的叙述在答题纸上回答问题1至问题3某公司拟开发一个商
试题二 阅读以下关于结构化软件系统建模的叙述在答题纸上回答问题1至问题3某公司拟开发一个商
阅读下列说明和图回答问题1至问题3 【说明】某汽车数字仪表板将完成下述功能 1通过模/数转换实现
阅读下列说明和数据流图回答问题1至问题3[说明]考务处理系统具有如下功能1对考生送来的报名单进行检查
阅读以下关于结构化软件系统建模的叙述在答题纸上回答问题1至问题3 某公司拟开发一个商业情报
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内[说明]下面给出的是某房产管理系统的一套分
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某供销系统接受顾
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某供销系统接受顾
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某供销系统接受顾
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内[说明]下面给出的是某房产管理系统的一套分
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 下面给出的是某房
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某供销系统接受顾
阅读下列说明及数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某学校建立了一个
阅读下列说明和数据流图回答问题1至问题3[说明]考务处理系统具有如下功能1对考生送来的报名单进行检查
阅读下列说明和图回答问题1至问题3 【说明】某汽车数字仪表板将完成下述功能 1通过模/数转换实现
阅读下列说明和数据流图回答问题1至问题3[说明]考务处理系统具有如下功能1对考生送来的报名单进行检查
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 某供销系统接受顾
热门试题
更多
阅读以下说明和Jrdva代码将应填入n处的字句写在对应栏内 [说明] 在销售系统中常常需要打印销售票据有时需要在一般的票据基础上打印脚注这样就需要动态地添加一些额外的职责如下展示了Decorator修饰模式SalesOrder对象使用一个SalesTicket对象打印销售票据图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过 [图6-1] [Java代码] //Component.jav__件 public1classComponent{ abstractpublicvoidprtTicket } //salesTicket.jav__件 publicclassSalesTicketextendsComponent{ publicvoidprtTicket{ //Salesticketprintingcodehere System.out.printin"SalesTicket" } } //Decorator.jav__件 publicabstractclassDecoratorextendsComponent{ publicvoidprtTicket{ ifmyComp!=nullmyComp.prtTicket } private2myComp publicDecoratorComponentmyC{ myComp=myC } } //Footer.jav__件 publicclassFooterextendsDecorator{ publicFooterComponentmyC{ 3 } publicvoidprtTicket{ 4 prtFooter } publicvoidprtFooter{ //placeprintingfootercodehere System.out.println"Footer" } } //salesorder.jav__件 publicclassSalesOrder{ voidprtTicket{ ComponentmyST myST=newFooter5 //PrintTicketwithfootersasneeded myST.prtTicket } } 1处填
阅读以下说明和表回答问题1~3问题 [说明]在学校中存在以下关系 a一个系有若干学生但一个学生只能在一个系 b一个学生可以选修多门课程每门课程有若干学生选修 c每个学生所学的每门课程都有一个成绩 该校在学生信息管理数据库设计了三个基本表分别为表一表二表三 a表一学生信息表STUDENTSTIDNAMEAGEDEPTNO其中STID表示学号NAME表示学生姓名AGE表示年龄DEPTNO表示系号 b表二课程表COURSECOIDNAME其中COID表示课程号NAME表示课程名 c表三成绩表SCORESCIDCOIDGRADE其中SCID表示学号COID表示课程号 GRADE表示成绩成绩为空时表示这学期正在上的课程 [问题2] 数据库设计的需求分析阶段和概念结构设计阶段的主要任务分别是什么这两个阶段标志性的成果有哪些
阅读以下说明和程序流程图将应填入n处的字句写在对应栏内 [说明] 假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为 m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2] 其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数注数组下标从0开始 流程图图4-1用于计算长整数的加减法运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注此处不考虑溢出情况即数组足够大这样在程序中引进两个指针pA和pB分别指向绝对值较大者和较小者而对绝对值相加情况让pA指向LApB指向LB不区分绝对值大小pA±pB可用通式pA+flag*pB来计算flag为+1时即对应pA+pBflag为-1时即对应pA-pB需特别注意的是对于相减不够减时要进行借位而当 最高位借位后正好为0时结果的总位数应减1对于加法有最高进位时结果的总位数应加1 流程图中涉及的函数说明如下 1cmpint*LAint*LB函数用于比较长整数LA与LB的绝对值大小若LA绝对值大于LB绝对值则返回正值LA绝对值小于LB绝对值返回负值相等则返回0 2maxintAintB函数用于返回整数A与B中较大数 另外对流程图中的写法进行约定1“=”表示赋值如“flag=LA[0]+LB[0]”表示将“LA[0]+LB[0]”的结果赋给flag相当于C中的赋值语句“flag=LA[0]+LB[0]”2“”表示比较运算如“flag1”表示flag与1比较 2处填
阅读下列说明回答问题1~问题4 【说明】 某超市的销售业务由一个销售业务管理系统进行管理该系统每完成一次交易都需要提供顾客发票其格式见表6所示 对于这样一个销售业务管理系统分别给出了以下两种关系数据库的设计下划线表示主关键字设计一 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名name住址address联系电话 phone商品Merchandise商品代码Mno商品名称Mname价格price 发票Invoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno商品代码 Mno单价unitpfice数量amount设计二 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名name住址address联系电话phone 商品Memhandise商品代码Mno商品名称Mname价格price 发票Ivoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno 发票明细Invoicedetail发票号码Ino商品代码Mno单价unitprice数量amount 【问题3】 根据设计二中关系模式以下SQL语句是用于查询从未售出的商品信息的不完整语句请填补其中的空缺SELECT MnoMnamepriceFROMMerchandise1 WHERE2 SELECT3FROM lnvoicedetailWHEREA.Mno=lnvoicedetail. Mno
阅读下列说明和算法回答问题1和问题2 【说明】 算法2-1是用来检查文本文件中的圆括号是否匹配若文件中存在圆括号没有对应的左括号或者右括号则给出相应的提示信息如下所示 文件 提示信息1+2abc 缺少对应左括号第2行第4列defgx 缺少对应左括号第3行第10列h ijk1ml 缺少对应右括号第5行第4列第4行第1列 在算法2-1中stack为一整数栈算法中各函数的说明见表4 表4 函数名 函数功能 pushinti 将整数i压人栈stack中 pop stack的栈顶元素出栈 empty 判断stack栈是否为空若为空函数返回1否则函数返回0 nextch 读取文本文件中的下—个字符井返回该字符的ASCII值将字符所在的行号以及字符在行中的位置分别存储到变量row和col中若遇到文件结束符则将变量EOF置为true kindcharch 判断字符ch是左括号还是右括号若是左括号函数返回1若是右括号函数返回2若两者都不是函数返回【算法2-1】将栈stack 置空置EOF为falsech<-nextch;whilenotEOFk<-kindCH;ifk==1 push2;push3;elseifk==4ifnot emptypop;pop;else显示错误信息缺少对应左括号或右括号显示行号row显示列号colendifendif ch<-nextch;endwhileifnotempty显示错误信息缺少对应左括号或右括号whilenot emptyrow<-pop;col<-pop;显示行号row;显示列号col;endwhileendif 为了识别更多种类的括号对算法2-1加以改进后得到算法2-2算法2-2能够识别圆括号方括号和花括号不同类型的括号不能互相匹配改进后函数kindchar ch的参数及其对应的返回值见表5表五 ch { } [ ] 其他 返回值 1 2 3 4 5 6 0 【算法2-2】将栈stack置空置EOF为falsech< -nextchwhilenotEOF k<-kindchifk>0 if判断条件1 push5;push 6;push7; elseif判断条件2and判断条件3 pop;pop;pop; else 显示行号row显示列号col endifendifch<- nextch;endwhileifnotempty 显示错误信息缺少对应左括号或右括号whilenotempty pop;row←pop;col←pop; 显示行号row显示列号colendwhileendif 【问题1】 请将【算法2-1】和【算法2-2】中1~7处补充完整
[说明] 在一些应用场合中需要对用户的输入数据进行检查监控以下VisualBasic程序实现了对新添加到List列表的内容进行监控拒绝向List列表添加重复信息例如在List列表中存在元素a01001a01002如果用户输入数据为aOl001或a01002系统则弹出提示信息拒绝将新数据加入List列表如果用户输入的数据不同与List列表中的任何一个元素则作为新元素加入List中VisualBasic界面显示如图11-5所示根据程序功能说明完成程序代码 [代码1] BeginVB.FormForm1 Caption=List列表拒绝添加重复信息 //...窗体描述略 BeginVB.CommandButtonCommand2 Caption=退出 //...窗体描述略 End BeginVB.CommandButtonommand1 Caption=添加 //...窗体描述略 End BeginVB.TextBoxText1 //...窗体描述略 End BeginVB.ListBoxList1 Height=1860 ItemData=Form1.frx:0000 Left=1020 List=Form1.frx:0002 TabIndex=0 Top=525 Width=2580 End BeginVB.LabelLabell BackStyle=0’Transparent Caption=请输入编号 //...窗体描述略 End End [代码2] AttributeVB_Name=Form1 AttributeVB_GlobalNameSpace=False AttributeVB_Creatable=False AttributeVB_PredeclaredId=True AttributeVB_Exposed=False PrivateSubForm_Load Listl.AddItema01001 Listl.AddItema01002 EndSub PrivateSubCommand1Click DimMyvalAsLong Fori=0To1 2 If3Then MsgBox系统不允许重复输入请重新输入 ExitSub EndIf 4 5 EndSub
阅读下列说明以及图示如图1所示回答问题1~3 【说明】 某大学准备开发一个学生课程注册系统学生可以使用该系统查询新学期将开设的课程和讲课教师情况选择自己要学习的课程进行登记注册并可以查询成绩单教师可以使用该系统查询新学期将开设的课程和选课学生情况并可以登记成绩单注册管理员使用该系统进行注册管理包括维护教师信息学生信息和课程信息等 在每个学期的开始学生可以获得该学期的课程目录表课程目录表列出每门课程的所有信息诸如基本信息教师开课系和选课条件等 新学期开始前两周为选课注册时间在此期间学生可以选课注册并且允许改变或取消注册申请开学两周后注册管理员负责关闭课程注册每个学生可以选择不超过4门课程同时指定2门侯选课程以备主选课程未选上每门课程最多不能超过10人最少不能低于3人低于3人选课的课程将被取消一旦学生的注册过程完毕注册系统将有关信息提交收费系统以便学生付费如果在实际注册过程中名额已满系统将通知学生在提交课程表之前予以更改 在学期结束时学生可以存取系统查看电子成绩单由于学生成绩属于敏感信息系统必须提供必要的安全措施以防非法存取 【用例图】表1学生课程注册系统的实体类 实体类 说明 Professor 学校中讲课的教师 student 学校中注册课程的学生 Schedule 学生在新学期选择登记的课程列表 CourseCatalog 学校所有课程的目录 Course 课程的基本信息 CourseOffering 新学期课程的开设信息如讲课教师时间地点等信息表2 学生课程注册系统的边界类 边界类 说明 LoginForm 为教师学生和注册管理员提供登录的操作 RegisterCoursesForm 为学生提供选课注册的操作 ViewReportForm 为学生提供成绩查询的操作 selecrTeachCoursesForm 为教师提供查看学生选课情况的操作 SubmitCradesForm 为教师提供登记成绩的操作 MaintainProfessorsForm 为注册管理员提供维护教师信息的操作 MaintainStudentsForm 为注册管理员提供维护学生信息的操作 MaintainCoursesForm 为注册管理员提供维护课程信息的操作 CloseRegistrationForm 为注册管理员提供关闭注册的操作 BillingSystemNotice 提供与收费系统的信息交换接口表3 学生课程注册系统的控制类 控制类 说明 RegisterCoursesControl 负责新学期学生的选课登记 ViewReportControl 负责学生成绩的查询 SelectTeachCoursesControl 负责新学期课程的学生选择情况 SubmitGradesControl 负责学生成绩的登记 CloseRegistrationControl 负责关闭课程注册【协作图】 【时序图】 注释1学生打算注册新的课程注释2一张这学期可选择的课程列表 注释3显示一张为学生选课用的空白登记表 【问题2】 协作图与时序图是同构的二者表示的都是同样的系统交互活动只是各自的侧重点不同而已根据题目提供的信息指出协作图中4~8处表示的内容
阅读下列函数说明和C++代码将应填入n处的字句写在对应栏内 [说明] 在销售系统中常常需要打印销售票据有时需要在一般的票据基础上打印脚注这样就需要动态地添加一些额外的职责如下展示了Decorator修饰模式SalesOrder对象使用一个SalesTicket对象打印销售票据先打印销售票据内容然后再打印脚注图5-1显示了各个类间的关系以下是C++语言实现能够正确编译通过 [图5-1] [C++代码] classComponent{ public 1voidprtTicket=0 } classSalesTicketpublicComponent{ public voidprtTicket{ cout<<"SalesTicket!"<<endl } } classDecoratorpublicComponent{ public virtualvoidprtTicket DecoratorComponent*myC private 2myComp } DecoratorDecoratorComponent*myC { myComp=myC } voidDecoratorprtTicket { myComp->prtTicket } classFooterpublicDecorator{ public FooterComponent*myC voidprtTicket voidprtFooter } FooterFooterComponent*myC3{} voidFooterprtFooter { cout<<"Footer"<<endl } voidFooterprtTicket { 4 prtFooter } classSalesOrder{ public voidprtTicket } voidSalesOrderprtTicket { Component*myST myST=newFooter5 myST->prtTicket } 2处填
假定SP表存储供应情况如下的SQL语句是用于查询“产地为‘Beijing’零件号为‘P101’的零件的所供应的总数包括所有供应商”的不完整语句请在空缺处填入正确的内容 SELECTSUMQty FROMSP WHEREPNo=”P101’ 1PNo2 SELECTPNo FROM3 WHEREcity="Beijing" 4PNo; 2处填
阅读以下说明和数据流图回答问题1~3问题 [说明] 研究生招生系统旨在用计算机对学校的研究生招生事务进行管理研究生招生可分为报名阶段考试阶段和录取阶段招生报考前招生处要进行考前准备工作如统计招生导师考试科目以及制定报考专业标准代码等招生导师信息包括导师的姓名性别年龄出生年月所从事专业和研究方向以及所在系别考试科目包含科目代码科目的名称以及报考本科目的考试人数在报名阶段考生向招生处提交报名数据表研究生系统根据考生的报考数据确定考生准考生号并通知考生考试日期在考试阶段考试结束后考生成绩录入研究生招生系统考生可以从研究生招生系统中获取自己的考试成绩在录取阶段研究生招生系统根据考生的报考数据考试成绩外校调剂考生信息以及往年保留资格记录文件确定录取数据并形成录取文件系统统计并记录相关招生信息以供查询对被录取的考生发放录取通知书对需要保留资格的考生记录其信息以供下年度招生使用招生处可以从研究生招生系统中获得录取数据和招生情况的统计信息以供咨询 数据流图11-1为研究生招生系统顶层图数据流图11-2为研究生招生系统第0层DFD图数据流图11-3为加工3的细化图 [数据流图11-1][数据流图11-2] [数据流图11-3] [问题1] 数据流图11-2中有3条数据流请根据说明中的术语给出这三条数据流名称并指出起点和终点
阅读下列说明回答问题1~问题4 【说明】 某超市的销售业务由一个销售业务管理系统进行管理该系统每完成一次交易都需要提供顾客发票其格式见表6所示 对于这样一个销售业务管理系统分别给出了以下两种关系数据库的设计下划线表示主关键字设计一 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名name住址address联系电话 phone商品Merchandise商品代码Mno商品名称Mname价格price 发票Invoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno商品代码 Mno单价unitpfice数量amount设计二 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名name住址address联系电话phone 商品Memhandise商品代码Mno商品名称Mname价格price 发票Ivoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno 发票明细Invoicedetail发票号码Ino商品代码Mno单价unitprice数量amount 【问题1】 设计一的关系模式Invoice最高满足第几范式为什么设计一和设计二哪个更加合理为什么
阅读下列函数说明和C代码将应填入n处的字句写在对应栏内 [说明] HufTman树又称最优二叉树是一类带权路径长度最短的树在编码中应用比较广泛 构造最优二叉树的Huffman算法如下 ①根据给定的n各权值{W1w2…wn构成n棵二叉树的集合F={T1T2…Tn}其中每棵树Ti中只有一个带权为wi的根节点其左右子树均空 ②在F中选取两棵根节点的权值较小的树作为左右子树构造一棵新的二叉树置新构造二叉树的根节点的权值为其左右予树根节点的权值之和 ③从F中删除这两棵树同时将新得到的二叉树加入到F中 重复②③直到F中只剩一棵树为止 函数中使用的预定义符号如下 #defineINTMAX10000 #defineENCODINGLENGTH1000 typedefenumnoneleft_childright_childWhich /*标记是左孩子还足右孩子*/ typedefcharElemtype typedefstructTNode{//Huffman树节点 Elemtypeletter int weight//权值 intparent//父节点 Whichsigh char*code//节点对应编码 }HTNode*HuffmanTree intn charcoding[50]//储存代码 [函数] voidSelectHuffmanTreeHTintendint*slint*s2 /*在0~END之间找出最小和次小的两个节点序号返吲S1S2*/ { inti intmin1=INT_MAX intmin2=INT_MAX fori=0i<=endi++{/*找最小的节点序号*/ if1&&HT[i].weight<minl{ *s1=i min1=HT[i].weight } } fori=0i<=endi++{/*找次小节点的序号*/ ifHT[i].parent==0&&2 &&min2>HT[i].weight{ *s2=i min2=HT[i].weight } } } voidHuffmanTreeCreatHuffmanTree&HT/*建立HUFFMAN树*/ { inti intm=2*n-1 ints1s2 fori=ni<mi++{ Select3 HT[s1].parent=i HT[s2].parent=i HT[s1].sigh=leftchild HT[s2].sigh=rightchild HT[i].weight=4 } } voidHuffmanTreeEncodingcharsen[]HuffmanTreeHT {/*将句子进行编码*/ inti=0 intj whilesen[i]!=’\0’{ forj=0j<nj++{ ifHT[j].letter==sen[i]/*字母吻合则用代码取代*/ strcatcoding5 break } } i++ ifSen[1]==32i++ } printf"/n%s"coding } 3处填
阅读下列函数说明和C代码将应填入n处的字句写在对应栏内 [说明] HufTman树又称最优二叉树是一类带权路径长度最短的树在编码中应用比较广泛 构造最优二叉树的Huffman算法如下 ①根据给定的n各权值{W1w2…wn构成n棵二叉树的集合F={T1T2…Tn}其中每棵树Ti中只有一个带权为wi的根节点其左右子树均空 ②在F中选取两棵根节点的权值较小的树作为左右子树构造一棵新的二叉树置新构造二叉树的根节点的权值为其左右予树根节点的权值之和 ③从F中删除这两棵树同时将新得到的二叉树加入到F中 重复②③直到F中只剩一棵树为止 函数中使用的预定义符号如下 #defineINTMAX10000 #defineENCODINGLENGTH1000 typedefenumnoneleft_childright_childWhich /*标记是左孩子还足右孩子*/ typedefcharElemtype typedefstructTNode{//Huffman树节点 Elemtypeletter int weight//权值 intparent//父节点 Whichsigh char*code//节点对应编码 }HTNode*HuffmanTree intn charcoding[50]//储存代码 [函数] voidSelectHuffmanTreeHTintendint*slint*s2 /*在0~END之间找出最小和次小的两个节点序号返吲S1S2*/ { inti intmin1=INT_MAX intmin2=INT_MAX fori=0i<=endi++{/*找最小的节点序号*/ if1&&HT[i].weight<minl{ *s1=i min1=HT[i].weight } } fori=0i<=endi++{/*找次小节点的序号*/ ifHT[i].parent==0&&2 &&min2>HT[i].weight{ *s2=i min2=HT[i].weight } } } voidHuffmanTreeCreatHuffmanTree&HT/*建立HUFFMAN树*/ { inti intm=2*n-1 ints1s2 fori=ni<mi++{ Select3 HT[s1].parent=i HT[s2].parent=i HT[s1].sigh=leftchild HT[s2].sigh=rightchild HT[i].weight=4 } } voidHuffmanTreeEncodingcharsen[]HuffmanTreeHT {/*将句子进行编码*/ inti=0 intj whilesen[i]!=’\0’{ forj=0j<nj++{ ifHT[j].letter==sen[i]/*字母吻合则用代码取代*/ strcatcoding5 break } } i++ ifSen[1]==32i++ } printf"/n%s"coding } 1处填
[说明] 建立一个分数类使之具有下述功能建立构造函数它能防止分母为0当分数不是最简形式时进行约分以及避免分母为负数如经过类Num3-6的处理转换为经过类Num810的处理后转换为 [C++代码] #include<iostream.h> #include<math.h> classNum { public: Numintaintb; private: intnum1; intnum2; }: Num::Numintaintb { if1 { cout<<ERROR<<endl; return; } intmin=fabsa<fabsbfabsa:fabsb; intx=1; forinti=1;i<=min;i++ if2 x=i; a/=X; b/=x; if3 { a=-a; b=-b; } 4 5 }
阅读下列函数说明和C代码将应填入n处的字句写在对应栏内 [说明] HufTman树又称最优二叉树是一类带权路径长度最短的树在编码中应用比较广泛 构造最优二叉树的Huffman算法如下 ①根据给定的n各权值{W1w2…wn构成n棵二叉树的集合F={T1T2…Tn}其中每棵树Ti中只有一个带权为wi的根节点其左右子树均空 ②在F中选取两棵根节点的权值较小的树作为左右子树构造一棵新的二叉树置新构造二叉树的根节点的权值为其左右予树根节点的权值之和 ③从F中删除这两棵树同时将新得到的二叉树加入到F中 重复②③直到F中只剩一棵树为止 函数中使用的预定义符号如下 #defineINTMAX10000 #defineENCODINGLENGTH1000 typedefenumnoneleft_childright_childWhich /*标记是左孩子还足右孩子*/ typedefcharElemtype typedefstructTNode{//Huffman树节点 Elemtypeletter int weight//权值 intparent//父节点 Whichsigh char*code//节点对应编码 }HTNode*HuffmanTree intn charcoding[50]//储存代码 [函数] voidSelectHuffmanTreeHTintendint*slint*s2 /*在0~END之间找出最小和次小的两个节点序号返吲S1S2*/ { inti intmin1=INT_MAX intmin2=INT_MAX fori=0i<=endi++{/*找最小的节点序号*/ if1&&HT[i].weight<minl{ *s1=i min1=HT[i].weight } } fori=0i<=endi++{/*找次小节点的序号*/ ifHT[i].parent==0&&2 &&min2>HT[i].weight{ *s2=i min2=HT[i].weight } } } voidHuffmanTreeCreatHuffmanTree&HT/*建立HUFFMAN树*/ { inti intm=2*n-1 ints1s2 fori=ni<mi++{ Select3 HT[s1].parent=i HT[s2].parent=i HT[s1].sigh=leftchild HT[s2].sigh=rightchild HT[i].weight=4 } } voidHuffmanTreeEncodingcharsen[]HuffmanTreeHT {/*将句子进行编码*/ inti=0 intj whilesen[i]!=’\0’{ forj=0j<nj++{ ifHT[j].letter==sen[i]/*字母吻合则用代码取代*/ strcatcoding5 break } } i++ ifSen[1]==32i++ } printf"/n%s"coding } 5处填
假定SP表存储供应情况如下的SQL语句是用于查询“产地为‘Beijing’零件号为‘P101’的零件的所供应的总数包括所有供应商”的不完整语句请在空缺处填入正确的内容 SELECTSUMQty FROMSP WHEREPNo=”P101’ 1PNo2 SELECTPNo FROM3 WHEREcity="Beijing" 4PNo; 4处填
在面向对象分析过程中通常用概念模型来详细描述系统的问题域而用来表示概念模型
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 下面给出的是某房产管理系统的一套分层数据流图其功能描述如下 1系统随时根据住房送来的入住单更新住户基本信息文件 2每月初系统根据物业管理委员会提供的月附加费例如清洁费保安费大楼管理费等表和房租调整表计算每家住户的月租费包括月附加费向住户发出交费通知单住户交费时系统输入交费凭证核对后输出收据给住户 3系统定期向物业管理委员会提供住房分配表和交费清况表 4住户因分户或换房在更新住户基本信息文件的同时系统应立即对这些住户做月租费计算以了结分户或换房前的房租 数据流图如图1-4所示 假定题中提供的DFD是正确的请回答下列问题 指出图1-2中的哪些文件可不必画出
【函数1说明】函数compareSqListASqListB的功能是设A=alam和B=b1bn均为顺序表比较两个顺序表A和B的大小设A’和B’分别为A和B中除去最大共同前缀后的子表例如A=yxxzxzB=yxx2yxxz则两者中最大的共同前缀为yxxz在两表中除去最大共同前缀后的子表分别为A’=xz和B’=yxxz若A’=B’=空表则A=B若A’=空表而B’≠空表或者两者均不为空表且A’的首元小于B’首元则A<B否则A>B提示算法的基本思想为若相等则j+1之后继续比较后继元素否则即可得出比较结果显然j的初值应为0循环的条件是j不超出其中任何一个表的范围若在循环内不能得出比较结果则循环结束时有3种可能出现的情况需要区分【函数1】intcompareSqListASqListB{//若A<B则返回-1若A=B则返回0若A>B则返回1j=0;whilei<1&&j<B.lengthifA.elem[j]<B.elem[j]return-1elseifA.elem[j]>B.elem[j]return1;else2;ifA.length==B.lengthreturn0;elseifA.length<B.lengthreturn-1;elsereturn1}//compare//函数1的时间复杂度是3【函数2说明】函数exchanse_LSLnk&Lintm的功能是用尽可能少的辅助空间将单链表中前m个结点和后n个结点的互换即将单链表a1a2amb1b2bn改变成b1b2bna1a2am【函数2】voidexchange_LSLink&Lintm{if4&&L->next//链表不空且Lm!=0{P=L->next;k=1whilek<m&&p//查找am所在结点{P=5;++k;}if6&&p->next//n!=0时才需要修改指针ha=L->next;//以指针ha记a1结点的位置L->next=p->next;//将B1结点链接在头结点之后p->next=NULL;//设am的后继为空q=7;//令q指向b1结点whileq->nextq=8;//查找bn结点q->>next=9;//将a1结点链接到bn结点之后}}}//函数2的时间复杂度是10
阅读以下说明和数据流图回答问题1~3问题 [说明] 研究生招生系统旨在用计算机对学校的研究生招生事务进行管理研究生招生可分为报名阶段考试阶段和录取阶段招生报考前招生处要进行考前准备工作如统计招生导师考试科目以及制定报考专业标准代码等招生导师信息包括导师的姓名性别年龄出生年月所从事专业和研究方向以及所在系别考试科目包含科目代码科目的名称以及报考本科目的考试人数在报名阶段考生向招生处提交报名数据表研究生系统根据考生的报考数据确定考生准考生号并通知考生考试日期在考试阶段考试结束后考生成绩录入研究生招生系统考生可以从研究生招生系统中获取自己的考试成绩在录取阶段研究生招生系统根据考生的报考数据考试成绩外校调剂考生信息以及往年保留资格记录文件确定录取数据并形成录取文件系统统计并记录相关招生信息以供查询对被录取的考生发放录取通知书对需要保留资格的考生记录其信息以供下年度招生使用招生处可以从研究生招生系统中获得录取数据和招生情况的统计信息以供咨询 数据流图11-1为研究生招生系统顶层图数据流图11-2为研究生招生系统第0层DFD图数据流图11-3为加工3的细化图 [数据流图11-1][数据流图11-2] [数据流图11-3] [问题3] 请补齐下列数据字典条目 导师=__________________________________________ 考试科目=_________________________________________
阅读以下说明和程序流程图将应填入n处的字句写在对应栏内 [说明] 假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为 m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2] 其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数注数组下标从0开始 流程图图4-1用于计算长整数的加减法运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注此处不考虑溢出情况即数组足够大这样在程序中引进两个指针pA和pB分别指向绝对值较大者和较小者而对绝对值相加情况让pA指向LApB指向LB不区分绝对值大小pA±pB可用通式pA+flag*pB来计算flag为+1时即对应pA+pBflag为-1时即对应pA-pB需特别注意的是对于相减不够减时要进行借位而当 最高位借位后正好为0时结果的总位数应减1对于加法有最高进位时结果的总位数应加1 流程图中涉及的函数说明如下 1cmpint*LAint*LB函数用于比较长整数LA与LB的绝对值大小若LA绝对值大于LB绝对值则返回正值LA绝对值小于LB绝对值返回负值相等则返回0 2maxintAintB函数用于返回整数A与B中较大数 另外对流程图中的写法进行约定1“=”表示赋值如“flag=LA[0]+LB[0]”表示将“LA[0]+LB[0]”的结果赋给flag相当于C中的赋值语句“flag=LA[0]+LB[0]”2“”表示比较运算如“flag1”表示flag与1比较 4处填
阅读下列函数说明和C代码填入n处字句并回答相应问题 [说明] 背包问题就是有不同价值不同重量的物品n件求从这n件物品中选取一部分物品的选择方案使选中物品的总重量不超过指定的限制重量而且选中物品的价值之和为最大 背包问题是一个典型的NP完全难题对该问题求解方法的研究无论是在理论上还是在实践中都具有一定的意义如管理中的资源分配投资决策装载问题等均可建模为背包问题 常用的背包问题求解方法很多但本题中采用了一种新的算法来求解背包问题该算法思想为首先要对物品进行价重比排序然后按价重比从大到小依次装进包裹这种方法并不能找到最佳的方案因为有某些特殊情况存在但只要把包中重量最大的物品取出继续装入直到达到limitweight这时的物品就是limit weight的最大价值这种算法不需要逐个进行试探所以在数据非常大时执行效率主要由排序的时间复杂度决定该算法的流程图为图11-4 仔细阅读程序说明和C程序流程图及源码回答问题1和问题2[流程图11-4] [程序说明]structThing物品结构 typedefstructBag背包结构类型input 将物品按序号依次存入数组函数inbag物品按物价比入包函数 init初始化函数sort 对物品按价格重量比排序函数outbag 取出包中weiht最大的物品函数print最佳方案输出函数 [C程序]#defineN255structThing {doubleweight; doublevalue; doubledens;}thing[N]; typedefstmctBag{Thing thing[N];double weighttmp;double sumvalue;}bagbest;inbag {do{ bag.thing[i]=thing[i]1 2 i++;}while 3}init {forinti=0;i<N;i++ {inputthing[i].weightthing [i].valuething[i].dens=thing[i].value/thing [i].weight;};}main {init;sort ;inbag;do{ best=bag;//把包中物品放入暂存数组outbag; //取出包中weight最大的物品4 }while5 printbest//输出temp因为是最佳方案 } [问题2] 求解背包问题常用的方法有哪几种各有什么样的特点
【说明】本题将有向网带权有向图定义为类AdjacencyWDigraph类中的数据成员n表示有向网中的顶点数a为带权邻接矩阵用于存储有向网中每一对顶点间弧上的权值c为二维数组存储有向网中每一对顶点间的最短路径长度kay为二维数组存储最短路径kay[i][j]=k表示顶点i到达顶点j的最短路径必须经过顶点k类中的主要成员函数有Input输入有向网的顶点数各条弧及权值建立带权领接矩阵a若顶点i到顶点j有弧则a[i][j]取弧上的权值否则a[i][j]的值取NoEdgeAllPairs用弗洛伊德Floyd算法求有向网中每一对顶点间的最短路径长度OutShortestPathintiintj计算顶点i到顶点j的最短路径outputPathintiintj输出顶点i到顶点j的最短路径上的顶点Floyd算法的基本思想是递推地产生一个矩阵序列C0C1C2Cn其中C0是已知的带权邻接矩阵aCkij0≤ij<表示从顶点i到顶点j的中间顶点序号不大于k的最短路径长度如果i到j的路径没有中间顶点则对于0≤k<n有Ckij=C0ij=a[i][j]递推地产生C1C2Cn的过程就是逐步将可能是最短路径上的顶点作为路径上的中间顶点进行试探直到为全部路径都找遍了所有可能成为最短路径上的中间顶点所有的最短路径也就全部求出算法就此结束【C++代码】#include<iostream.h>#defineNoEdge10000//当两个顶点之间没有边相连时在邻接矩阵中用NoEdge表示voidMake2DArrayint**&xintrowsintcols;classAdjacencyWDigraph{privateintn;//有向网中的顶点数目int**a;//存储顶点间弧上的权值int**c;//存储计算出的最短路径长度int**kay;//存储求出的最短路径pubic:intVerticesconstjreturnn;}voidAllPairs;voidInput;//输入有向网的顶点数各条弧及权值建立邻接矩阵avoidOutShortestPathintiintj;//计算顶点i到j的最短路径试卷中未列出~AdjacencyWDigraph;//析构函数试卷中未列出private:voidoutputPathintiintj;};voidAdjacencyWDigraph::AllPairsintijkt1t2t3;fori=1;i<=n;k++forj=1;j<=n;++j{c[i][j]=1;kay[i][j]=0;}fork=1;k<=n;k++fori=1;i<=n;i++{ifi==kcontinue;t1=c[i][k];forj=1;j<=n;j++{ifj==k||j==icontinue;t2=c[k][j];t3=c[i][j];ift1!=NoEdge&&t2!=NoEdge&&t3==NoEdge||t1+t2<t3{c[i][j]=2;kay[i][j]=3;}}//for}//forvoidAdjacencyWDigraph::outputPathintiintj{//输出顶点i到j的最短路径上的顶点ifi==jreturn;ifkay[i][j]==0cout<<j<<;else{outputPathi4;outputPath5;}}voidAdjacencyWDigraph::lnput{intijuvwE;cout<<输入网中顶点个数:;cin>>n;cout<<输入网中弧的个数:;cin>>E;Make2DArrayan+1n+1;fori=1;i<=n;i++forj=1;j<=n;j++a[i][j]=NoEdge;fori=1;i<=n;i++a[i][i]=0;Make2DArraycn+1n+1;Make2DArraykayn+1n+1fori=1;i<=E;i++{cout<<输入弧的信息起点终点权值;;cin>>u>>v>>w;a[u][v]=w;}}voidMake2DArrayint**&xintrowsintcols{intij;x=newint*[rows+1];fori=0;i<rows+1;i++x[i]=newint[cols+1];fori=1;i<=rows;i++forj=1;j<=cols;j++x[i][j]=0;
阅读下列说明和数据流图回答问题1至问题3将解答填入对应栏内 [说明] 下面给出的是某房产管理系统的一套分层数据流图其功能描述如下 1系统随时根据住房送来的入住单更新住户基本信息文件 2每月初系统根据物业管理委员会提供的月附加费例如清洁费保安费大楼管理费等表和房租调整表计算每家住户的月租费包括月附加费向住户发出交费通知单住户交费时系统输入交费凭证核对后输出收据给住户 3系统定期向物业管理委员会提供住房分配表和交费清况表 4住户因分户或换房在更新住户基本信息文件的同时系统应立即对这些住户做月租费计算以了结分户或换房前的房租 数据流图如图1-4所示 假定题中提供的DFD是正确的请回答下列问题 指出图1-3的B中加工2.3能检查出哪些不合格交费凭证
阅读下列函数说明和C++代码将应填入n处的字句写在对应栏内 [说明] 在销售系统中常常需要打印销售票据有时需要在一般的票据基础上打印脚注这样就需要动态地添加一些额外的职责如下展示了Decorator修饰模式SalesOrder对象使用一个SalesTicket对象打印销售票据先打印销售票据内容然后再打印脚注图5-1显示了各个类间的关系以下是C++语言实现能够正确编译通过 [图5-1] [C++代码] classComponent{ public 1voidprtTicket=0 } classSalesTicketpublicComponent{ public voidprtTicket{ cout<<"SalesTicket!"<<endl } } classDecoratorpublicComponent{ public virtualvoidprtTicket DecoratorComponent*myC private 2myComp } DecoratorDecoratorComponent*myC { myComp=myC } voidDecoratorprtTicket { myComp->prtTicket } classFooterpublicDecorator{ public FooterComponent*myC voidprtTicket voidprtFooter } FooterFooterComponent*myC3{} voidFooterprtFooter { cout<<"Footer"<<endl } voidFooterprtTicket { 4 prtFooter } classSalesOrder{ public voidprtTicket } voidSalesOrderprtTicket { Component*myST myST=newFooter5 myST->prtTicket } 4处填
阅读以下说明和C代码将应填入n处的字句写在对应栏内 [说明] 函数combineabc是计算两个整数的组合数由于计算结果可能超出10ng整型的可表示范围故采用数组方式存储例如k位长整数m用数组c[]存储结构如下m=c[k]×10k-1+c[k-1]×10k-2+…+c[2]×10+c[1]利用c[0]存储长整数m的位数即c[0]=k数组的每个元素只存储长整数m的一位数字长整数运算时产生的中间结果的某位数字可能会大于9这是就应该调用format将其归整使数组中的每个元素始终只存储长整数的一位数字 整数a和ba>b的组合数为其中u1=au2]=a-1…ub=a-b+1d1=1d2=2…db=b为了计算上述分式先从u1u2…ub中去掉d1×d2×…×db的因子得到新的u1u2…ub然后再将它们相乘 [函数] #defineNAXN100 intgcdintaintb//求两个整数a和b的最大公因子 { ifa<b{ intC=aa=bb=c } forinti=bi>=2i--{ if1returni } return1 voidformatint*a//将长整数数组归整 { inti fori=1i<a[0]||a[i]>=10i++{ ifi>=a[0]2 a[i+1]+=a[i]/10 a[i]=a[i]%10 } ifi>a[0]3 } voidcombineintaintbint*C { intiJkx intd[MAXN]u[MAXN] k=0 fori=ai>=a-b+1i--u[++k]=i u[0]=b fori=1i<=bi++d[i]=i fori=1i<=u[0]i++{//从u中各元素去掉d中整数的因子 forj=1j<=bj++{ x=gcdu[i]d[j]//计算最大公约数 u[i]/=X d[j]/=x } 4C[1]=1//长整数c初始化 fori=1i<=u[0]i++//将u中各整数相乘存于长整数c中 ifu[i]!=1{ forj=1j<=c[0]j++{ C[j]=5 } formatC//将长整数c归整 } } } 2处填
阅读以下说明和C代码将应填入n处的字句写在对应栏内 [说明] 函数combineabc是计算两个整数的组合数由于计算结果可能超出10ng整型的可表示范围故采用数组方式存储例如k位长整数m用数组c[]存储结构如下m=c[k]×10k-1+c[k-1]×10k-2+…+c[2]×10+c[1]利用c[0]存储长整数m的位数即c[0]=k数组的每个元素只存储长整数m的一位数字长整数运算时产生的中间结果的某位数字可能会大于9这是就应该调用format将其归整使数组中的每个元素始终只存储长整数的一位数字 整数a和ba>b的组合数为其中u1=au2]=a-1…ub=a-b+1d1=1d2=2…db=b为了计算上述分式先从u1u2…ub中去掉d1×d2×…×db的因子得到新的u1u2…ub然后再将它们相乘 [函数] #defineNAXN100 intgcdintaintb//求两个整数a和b的最大公因子 { ifa<b{ intC=aa=bb=c } forinti=bi>=2i--{ if1returni } return1 voidformatint*a//将长整数数组归整 { inti fori=1i<a[0]||a[i]>=10i++{ ifi>=a[0]2 a[i+1]+=a[i]/10 a[i]=a[i]%10 } ifi>a[0]3 } voidcombineintaintbint*C { intiJkx intd[MAXN]u[MAXN] k=0 fori=ai>=a-b+1i--u[++k]=i u[0]=b fori=1i<=bi++d[i]=i fori=1i<=u[0]i++{//从u中各元素去掉d中整数的因子 forj=1j<=bj++{ x=gcdu[i]d[j]//计算最大公约数 u[i]/=X d[j]/=x } 4C[1]=1//长整数c初始化 fori=1i<=u[0]i++//将u中各整数相乘存于长整数c中 ifu[i]!=1{ forj=1j<=c[0]j++{ C[j]=5 } formatC//将长整数c归整 } } } 4处填
在关系模型的完整性约束中实体完整性规则是指关系中2参照完整性规则要求3 3处填
阅读以下说明和Jrdva代码将应填入n处的字句写在对应栏内 [说明] 在销售系统中常常需要打印销售票据有时需要在一般的票据基础上打印脚注这样就需要动态地添加一些额外的职责如下展示了Decorator修饰模式SalesOrder对象使用一个SalesTicket对象打印销售票据图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过 [图6-1] [Java代码] //Component.jav__件 public1classComponent{ abstractpublicvoidprtTicket } //salesTicket.jav__件 publicclassSalesTicketextendsComponent{ publicvoidprtTicket{ //Salesticketprintingcodehere System.out.printin"SalesTicket" } } //Decorator.jav__件 publicabstractclassDecoratorextendsComponent{ publicvoidprtTicket{ ifmyComp!=nullmyComp.prtTicket } private2myComp publicDecoratorComponentmyC{ myComp=myC } } //Footer.jav__件 publicclassFooterextendsDecorator{ publicFooterComponentmyC{ 3 } publicvoidprtTicket{ 4 prtFooter } publicvoidprtFooter{ //placeprintingfootercodehere System.out.println"Footer" } } //salesorder.jav__件 publicclassSalesOrder{ voidprtTicket{ ComponentmyST myST=newFooter5 //PrintTicketwithfootersasneeded myST.prtTicket } } 3处填
阅读以下说明和Jrdva代码将应填入n处的字句写在对应栏内 [说明] 在销售系统中常常需要打印销售票据有时需要在一般的票据基础上打印脚注这样就需要动态地添加一些额外的职责如下展示了Decorator修饰模式SalesOrder对象使用一个SalesTicket对象打印销售票据图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过 [图6-1] [Java代码] //Component.jav__件 public1classComponent{ abstractpublicvoidprtTicket } //salesTicket.jav__件 publicclassSalesTicketextendsComponent{ publicvoidprtTicket{ //Salesticketprintingcodehere System.out.printin"SalesTicket" } } //Decorator.jav__件 publicabstractclassDecoratorextendsComponent{ publicvoidprtTicket{ ifmyComp!=nullmyComp.prtTicket } private2myComp publicDecoratorComponentmyC{ myComp=myC } } //Footer.jav__件 publicclassFooterextendsDecorator{ publicFooterComponentmyC{ 3 } publicvoidprtTicket{ 4 prtFooter } publicvoidprtFooter{ //placeprintingfootercodehere System.out.println"Footer" } } //salesorder.jav__件 publicclassSalesOrder{ voidprtTicket{ ComponentmyST myST=newFooter5 //PrintTicketwithfootersasneeded myST.prtTicket } } 5处填
热门题库
更多
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术