首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
阅读下列函数说明和C代码, [说明] 所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。 应用贪婪...
查看本题答案
包含此试题的试卷
中级软件设计师《填空集》真题及答案
点击查看
你可能感兴趣的试题
EXPRESS语言中语言的定义和对象描述主要靠来实现
类型说明(Type)
实体说明(Entity)
规则说明(Rule)
函数说明(Function)
下列关于类的访问权限的描述中错误的是
说明为公有的成员可以被程序中的任何代码访问
说明为私有的成员只能被类的成员和说明为友元类的成员函数访问
说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该类的派生类的成员也可以访问
类的所有成员都可以被程序中的任何代码访问
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码函数fu
在函数说明时下列不必要的是项
函数参数的类型
函数参数名字
函数的名字
返回值表达式
古诗云一队风来一队沙有人行处没人家据此判断当地商业网点最适宜的组织形式是
大篷车、货郎担
商业小区
自动售货机
网上购物
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码函数su
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明代码函数numchar*st
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码函数su
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码函数De
阅读以下函数说明和C语言函数将应填入____处的字句写在答题纸的对应栏内 【说明1】函数intfac
要想把类的一般成员函数说明为类的常成员函数则应该使用关键词【11】说明成员函数
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码使sum
个体工商户包括小商小贩夫妻店货郎担家庭手工业等个体经营户应该
不属于团体火灾保险范畴
属于团体火灾保险范畴
属于财产保险范畴
不属于财产保险范畴
EXPRESS语言中语言的定义和对象描述主要靠来实现
类型说明(Type)
实体说明(Entity)
规则说明(Rule)
函数说明(Function)
使用VC6打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码函数sumint
使用VC6打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码补充空出的代码函数sumint
鸡毛换糖的货郎担精神是创立的
下列商业网络组织形式中能反映现代商业发展潮流的是
货郎担、大篷车
电子商务、网上购物、无人自动售货
专业化超市、连锁店
商业步行街、休闲购物广场
使用VC++6.0打开考生文件夹下的源程序文件2.cpp阅读下列函数说明和代码完成空出部分程序函数f
试题二15分每空3分 阅读下列函数说明和C代码将应填入n处的字句写在答题纸的对应栏内 [函数说明
热门试题
更多
【说明】 下面是某租车信息管理系统的介绍该车库中备有若干车辆每辆车有车号车牌车名价格等属性车库不定期地购买并注册新车供用户借用也可将报废的旧车注销以停止租用 车库可为众多用户提供服务每个用户在借车之前需注册姓名地址等内容每个用户最多可同时借3辆车每辆车借期7天若有一辆车超期则不可再借其他车一辆车超期一天罚款250元若一辆车超期3周不归还则发布通告若用户借的车丢失在罚款处理之前不能借车每辆报失的车罚款该车目前市价包括折旧的1.2倍注册新用户不受限制而注销用户之前该用户必须归还所有借的车或者报失并接受罚款 【状态图1】【状态图2】 【问题1】 分析车辆的状态和事件指出图2-1中的1234分别是什么
阅读以下说明和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处填
阅读以下说明和程序流程图将应填入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-1所示 对于这样一个销售业务管理系统分别给出了以下两种关系数据库的设计下划线表示主关键字设计一 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名flame住址address联系电话phone 商品Merchandise商品代码Milo商品名称Mname价格price 发票Invoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno商品代码Mno单价unitprice数量amount 设计二 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名name住址address联系电话吵one 商品Merchandise商品代码Mno商品名称mllame价格pnce 发票Invoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno 发票明细Invoicedetail发票号码Ino商品代码Uno单价unitprice数量amount 【问题1】 设计一的关系模式Invoice最高满足第几范式为什么设计一和设计二哪个更加合理为什么
阅读下列说明和算法回答问题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处补充完整
【说明】 下面是某租车信息管理系统的介绍该车库中备有若干车辆每辆车有车号车牌车名价格等属性车库不定期地购买并注册新车供用户借用也可将报废的旧车注销以停止租用 车库可为众多用户提供服务每个用户在借车之前需注册姓名地址等内容每个用户最多可同时借3辆车每辆车借期7天若有一辆车超期则不可再借其他车一辆车超期一天罚款250元若一辆车超期3周不归还则发布通告若用户借的车丢失在罚款处理之前不能借车每辆报失的车罚款该车目前市价包括折旧的1.2倍注册新用户不受限制而注销用户之前该用户必须归还所有借的车或者报失并接受罚款 【状态图1】【状态图2】 【问题3】 指出UML中活动图的含义并说明活动图和状态图的区别与联系
阅读下列说明以及图示如图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处填
阅读下列算法说明和算法将应填入n的字句写在答题纸的对应栏内 【说明】 下列最短路径算法的具体流程如下首先构造一个只含n个顶点的森林然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去直至该森林变成一棵树为止这棵树便是连通网的最小生成树该算法的基本思想是为使生成树上总的权值之和达到最小则应使每一条边上的权值尽可能地小自然应从权值最小的边选起直至选出n-1条互不构成回路的权值最小边为止 【算法】 /*对图定义一种新的表示方法以一维数组存放图中所有边并在构建图的存储结构时将它构造为一个有序表以顺序表MSTree返回生成树上各条边*/ typedefstrnct{ VertexTypevex1; VertexTypevex2; VRTypeweight; }EdgeType; typedefElemTypeEdgeType; typedefstruct{//有向网的定义 VertexTypevexs[MAX_VERTEX_NUM];//顶点信息 EdgeTypeedge[MAX_EDGE_NUM];//边的信息 Mtvexnumarcnum;//图中顶点的数目和边的数目 }ELGraph; voidMiniSpanTree_KruskalELGraphGSqList&MSTree{ //G.edge中依权值从小到大存放有向网中各边 //生成树的边存放在顺序表MSTree中 MFSetF; InitSetFG.vexnum;//将森林F初始化为n棵树的集合 InitListMSTreeG.vexaum;//初始化生成树为空树 i=O;k=l; whilek<1{ e=G.edge[i];//取第i条权值最小的边 rl=fix_mfsetFLocateVexe.vexl; r2=2//返回两个顶点所在树的树根 ifri3r2{//选定生成树上第k条边 ifListlnsertMSTreeke4;//插入生成树 mix_mfsetFrir2;//将两棵树归并为一棵树 } 5;//继续考察下一条权值最小边 } DestroySetF; }
阅读以下说明和C代码将应填入n处的字句写在对应栏内 [说明] 下面程序用来将打乱的单词还原为原来的次序比如将rty还原为try单词的原来次序存储于wordlist.txt文件中原则上可用穷举法rty对应的穷举为rtyryttrytyrytryrt但考虑到破译速度采用如下方法 注意到单词列表中不存在组成字符完全相同的单词如Hack12与Hack21包含完全相同的字符因此将单词中的字符进行重组再进行比较例如try单词重组为rty按ASCⅡ码顺序这样不管打乱的单词是什么顺序只要是由rty三个字母组成的均破译为try大大提高破译速度程序中借助二叉排序树以进一步提高查找效率二叉排序树左子树如果有上的节点对应的值均小于根节点的值右子树如果有上的节点对应的值均大于根节点的值 函数中使用的符号定义如下 #defineNumberofWords1275//单词总数 #defineMaxLength10//最长单词所含字符数 charWordList[NumberofWords][MaxLength]//存储单词列表 intcmpNode*qNode*p//q与p比较p小返回负值P大返回正值相等返回0 typedefstructNode//二叉树节点 char*eleLetters//重组后的字符串 intindex//对应单词表中的下标 structNode*lChiId*rChiid//左右子节点 }Node [C代码] voidreComposeNode*pchar*temp //重纰亦即将temp字符串中的字符升序排序存储于p节点中 //采用直接插入排序法 { charc strcpyp->eleLetterstemp// intlen=strlentemp intijk fori=0i<len-1i++{ k=i forj=i+1j<lanj++{ ifp->eleLetters[j]<P->eleLetters[k]k=J } if1{ C=P->eleLetters[i] P->eleLetters[i]=P->eleLetters[k] P->eleLetters[k]=c }//if }//for } intfindNode&rootchar*temp //在二叉排序树root中查找与temp匹配的单词 //若匹配返回相应单词在WordList中下标若查找失败返回-1 { Node*P*q intflag P=2//临时存储 reComposeptemp//将temp重组 q=&root whileflag=3&&q!=NULL{ ifflag<0{//搜索左子树 q=q->lChiid }else//搜索右子树 q=q->rChild } }//while ifflag==0{//找到匹配的保存下标 return4 } } if5{//查找失败 printf"cantunscramblethefollowingword%s"temp return-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 【问题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处填
阅读下列函数说明和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
阅读以下说明和C代码将应填入n处的字句写在对应栏内 [说明] 下面程序用来将打乱的单词还原为原来的次序比如将rty还原为try单词的原来次序存储于wordlist.txt文件中原则上可用穷举法rty对应的穷举为rtyryttrytyrytryrt但考虑到破译速度采用如下方法 注意到单词列表中不存在组成字符完全相同的单词如Hack12与Hack21包含完全相同的字符因此将单词中的字符进行重组再进行比较例如try单词重组为rty按ASCⅡ码顺序这样不管打乱的单词是什么顺序只要是由rty三个字母组成的均破译为try大大提高破译速度程序中借助二叉排序树以进一步提高查找效率二叉排序树左子树如果有上的节点对应的值均小于根节点的值右子树如果有上的节点对应的值均大于根节点的值 函数中使用的符号定义如下 #defineNumberofWords1275//单词总数 #defineMaxLength10//最长单词所含字符数 charWordList[NumberofWords][MaxLength]//存储单词列表 intcmpNode*qNode*p//q与p比较p小返回负值P大返回正值相等返回0 typedefstructNode//二叉树节点 char*eleLetters//重组后的字符串 intindex//对应单词表中的下标 structNode*lChiId*rChiid//左右子节点 }Node [C代码] voidreComposeNode*pchar*temp //重纰亦即将temp字符串中的字符升序排序存储于p节点中 //采用直接插入排序法 { charc strcpyp->eleLetterstemp// intlen=strlentemp intijk fori=0i<len-1i++{ k=i forj=i+1j<lanj++{ ifp->eleLetters[j]<P->eleLetters[k]k=J } if1{ C=P->eleLetters[i] P->eleLetters[i]=P->eleLetters[k] P->eleLetters[k]=c }//if }//for } intfindNode&rootchar*temp //在二叉排序树root中查找与temp匹配的单词 //若匹配返回相应单词在WordList中下标若查找失败返回-1 { Node*P*q intflag P=2//临时存储 reComposeptemp//将temp重组 q=&root whileflag=3&&q!=NULL{ ifflag<0{//搜索左子树 q=q->lChiid }else//搜索右子树 q=q->rChild } }//while ifflag==0{//找到匹配的保存下标 return4 } } if5{//查找失败 printf"cantunscramblethefollowingword%s"temp return-1 } } 4处填
阅读以下说明和程序流程图将应填入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处填
【说明】本题将有向网带权有向图定义为类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处填
【说明】 某超市的销售业务由一个销售业务管理系统进行管理该系统每完成一次交易都需要提供顾客发票其格式如表1-1所示 对于这样一个销售业务管理系统分别给出了以下两种关系数据库的设计下划线表示主关键字设计一 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名flame住址address联系电话phone 商品Merchandise商品代码Milo商品名称Mname价格price 发票Invoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno商品代码Mno单价unitprice数量amount 设计二 顾客Customer顾客代码Cno姓名name住址address联系电话phone 收银员Salesman收银员代码Sno身份证号idno姓名name住址address联系电话吵one 商品Merchandise商品代码Mno商品名称mllame价格pnce 发票Invoice发票号码Ino交易日期Idate顾客代码Cno收银员代码Sno 发票明细Invoicedetail发票号码Ino商品代码Uno单价unitprice数量amount 【问题3】 根据设计二中关系模式以下SQL语句是用于查询从未售出的商品信息的不完整语句请填补其中的空缺SELECT MnoMnamepriceFROMMerchandise1 WHERE2 SELECT3FROMInvoice detailWHEREA.Mno=Invoicedetail. Mno
热门题库
更多
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术