首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
有一个文件系统,采用三级索引的结构。文件控制块中设置10个直接索引地址,一级索引,二级索引、三级索引地址各一个。文件页的大小恰好与磁盘块大小相等,有512个字节。现有一个文件,它的文件控制块已在内存,...
查看本题答案
包含此试题的试卷
中级软件设计师《单项选择》真题及答案
点击查看
你可能感兴趣的试题
文件系统中若文件物理结构采用三级索引结构如果一个文件大小为1345块则存储该文件会用到______
主索引表
一级索引表
二级索引表
三级索引表
文件系统中若将逻辑上连续的文件信息分散存放在若干不连续的磁盘块中每个磁盘块中设置一个指向下一个磁盘块
顺序结构
链接结构
索引结构
I节点结构
UNIX的文件系统采用三级索引机制在文件控制块FCB中设置了一个索引表共有13个索引地址其中前10个
13
10+256*3
10+256+2562+2563
10+512+512*2+512*13
有一个文件系统如图5.4所示图中的框表示目录圈表示普通文件根目录常驻内存目录文件组织成链接文件不设文
某文件系统中文件的物理结构采用UNIX的三级索引结构假设一个物理块可以存放256个块号若要读取一个文
主索引表
一级索引表
二级索引表
三级索引表
某操作系统使用的磁盘每个磁盘块长1024个字节它的目录文件最多允许有511个下级文件最多存储在
12次
10次
15次
18次
某文件系统中香的物理结构采用UNIX的三级索引结构假设一个物理块可以存放256个块号若要读取一个文件
主索引表
一级索引表
二级索引表
三级索引表
在文件系统中如文件物理结构采用三级索引结构如果一个文件大小为1024块则存储该文件会用到
主索引表
一级索引表
二级索引表
三级索引表
文件系统采用多重结构搜索文件内容设块长为512B每个块号占3B如果不考虑逻辑块号在物理块中所占的位置
文件系统中若文件物理结构采用三级索引结构有一个文件大小为5478块则存储该文件会用到
主索引表
一级索引表
二级索引表
三级索引表
文件系统采用多重索引结构组织文件内容设块长为512字节每个块号长3字节如果不考虑逻辑块号在物理块中所
有一个文件系统根目录常驻内存如图所示目录文件采用链接结构假设每个目录下最多允许建立60个文件或
在一个根目录常驻内存的文件系统中目录文件采用链接结构每个目录下最多存放80个文件或目录称为下级文件每
如果某一个文件的物理结构采用的是UNIX的三级索引结构如图所示假设一个物理块可以存放128个块号要
主索引表
一级索引表
二级索引表
三级索引表
如果某一个文件的物理结构采用的是UNIX的三级索引结构如图所示假设一个物理块可以存放128个块号要
主索引表
一级索引表
二级索引表
三级索引表
在文件系统中如文件物理结构采用三级索引结构如果一个文件大小为24块则存储该文件会用到
主索引表
一级索引表
二级索引表
三级索引表
某文件系统采用多级索引的方式组织文件的存放假定在文件的i_node中设有13个地址项其中直接索引项1
文件系统中若文件物理结构采用三级索引结构则存储一个大小为345块的文件会用到
主索引表
一级索引表
二级索引表
三级索引表
某操作系统使用的磁盘每个磁盘块长1024个字节它的目录文件最多允许有511个下级文件最多存储在
5次
6次
10次
12次
热门试题
更多
[说明]在数据链路层扩展局域网时使用网桥网桥工作在数据链路层它根据MAC帧的目的地址对收到的帧进行转发网桥具有过滤帧的功能当网桥收到一个帧时并不是向所有的端口转发此帧而是先检查此帧的目的MAC地址然后确认将该帧转发到哪个端口最简单的网桥有两个端口即接口网桥的每个端口与一个网段相连每当收到一个帧时通过查找转发表将收到的帧转发当一个网桥刚刚连接到局域网上时其转发表是空的此时若收到一个帧按照以下算法处理和建立自己的转发表1从端口x收到的无差错的帧如有差错即丢弃在转发表中查找目的站MAC地址2如有则查找出到此MAC地址应走的端口d然后进行3否则转到53如到这个MAC地址去的端口d=x则丢弃此帧因为这表示不需要经网桥进行转发否则从端口d转发此帧4转到65向网桥除x以外的所有端口转发此帧这样做可以保证找到目的站6如源站不在转发表中则将源站MAC地址加入转发表登记该帧进入网桥的端口号设置计时器然后转到8如源站在转发表中则执行77更新计时器8等待新的数据帧转到1这时网桥就在转发表中登记以下三个信息站地址——登记收到帧的源MAC地址端口——登记收到的帧进入该网桥的端口号时间——登记收到的帧进入该网桥的时间现有五个工作站分别连接在三个局域网上并且用两个网桥连接起来如图3-1每一个网桥的两个端口号都标明在图上在一开始两个网桥中的转发表都是空的以后有以下各站向其他的站发送了数据帧即H1发送给H5H3发送给H2H4发送给H3H2发送给H1[图3-1]
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[C代码]typedef1*funl;enumHandValueHANDVALUE_GUU=0HANDVALUE_CHO=1HANDVALUE_PAA=2;//手势可取值依次为石头剪刀布//其大小顺序是循环相克的即石头赢剪刀剪刀赢布布赢石头boolwon;structHand*WSprevHand;structHand//手势enumHandValuehandvalue;hand[3]=HANDVALUE_GUUHANDVALUE_CHOHANDVALUE_PAA;intfightstructHand*h1structHand*h2//比较h1和h2h1代表的手势较大时返回1h1较小时返回-1相等时返回0//ifh1->handvalue==h2->handvaluereturn0;elseifh1->handvalue+1%2==h2>handvaluereturn1;elsereturn-1;structHand*getHandinthandvalue//依据手势代表的值取得手势若handvalue不合法返回NULLswitchhandvaluecase0:return&hand[0];break;case1:return&hand[1];bteak;case2;return&hand[2];break;return3;structStrategy//策略funlnextHand;//下一个手势;structHand*WSnextHandif!wonPSprevHand=getHandrand%3;returnPSprevHand;structPlayercharname[20];4strategy;//策略intwincount;intlosecount;intgamecount;;voidmainStrategyWS;WS.nextHand=WSnextHand;WSpreVHand=NULL;structPlayerWSplayer;5WSplayer.nameww;WSplayer.wincount=0;WSplayer.losecount=0;WSplayer.gamecount=0;WSplayer.strategy=&WS;
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图7-1显示了各个类间的关系[图7-1]以下是C语言实现能够正确编译通过[C代码]typedefvoid1char*title;typedefvoid*fun2charitems[][10]intN;typedefchar**fun3;charbuffer[500];structBuilder//构造器fun1makeTitle;2makeString;fun2makeItems;fun3getResult;;structDirectorstructBuilderbuilder;;char*construct3director//构造文件charitems[2][10]=早安午安;director->builder.makeTitleGreeting;director->builder.makeString从早上到白天结束;director->builder.makeItemsitems2;director->builder.makeString到了晚上;strcpyitems[0]晚安;strcpyitems[1]好梦;director->builder.makeItemsitems2;returndirector->builder.getResult;voidTXTmakeTitlechar*titlestrcatbuffer『;Strcatbuffertitle;strcatbuffer』/n/n;voidTXTmakeStringchar*strstrcatbuffer■;Strcatbufferstr;strcatbuffer/n/n;voidTXTmakeItemscharitems[][10]intN//将items加入文件中forinti=0i
[说明]公司IT部门决定开发一个计算机管理系统以记录期刊的传阅情况期刊在公司内部传阅员工可以要求加入传阅队列图书室登记公司收到的期刊交给名单中的第一名员工员工应在三个工作日内完成阅读员工阅读完毕后通知系统系统提醒下一位阅读者取书下一个员工必须确认已收到期刊当传阅名单中下一位员工出差在外时将无法进行传阅此时将期刊传给再下一位而将该员工作标记再次传递此书时优先考虑该员工最后一位员工阅读完毕后将期刊交还图书室以便共用系统能在员工忘记传递期刊时发出提醒信息系统详细记录期刊传阅情况当员工阅读完后通知系统系统记录该员工员工号及日期并在备注栏注明是传出同样当员工收到期刊后给系统确认系统记录该员工员工号及日期并在备注栏注明是收到公司的员工都有一个唯一的员工号公司订阅了多种期刊为每一本期刊有唯一期刊流水号产生一份传阅名单并详细记录传阅情况员工的出差情况存储在系统主机中该系统采用面向对象方法开发系统中的类以及类之间的关系用UML类图表示图1-1是该系统的类图的一部分图1-2描述了成功传递期刊的序列图[图1-1][图1-2]根据题意将图1-2中的1~5处补充完整
[说明]某学校的教学系统描述如下学生信息包括学号Sno姓名Sname性别Ssex年龄Sage入学年份Syear主修专业Smajor其中学号是入学时唯一编定的教师信息包括教工号Tno姓名Tname性别Tsex年龄Tage职称Title其中教工号是唯一编定的课程信息包括课程号Cno课程名称Cname学时Cpeiiod学分Ccredit其中课程号是唯一编定的每个专业每个年级只有一个班级这样班级就可用入学年份标识每位教师只教授特定的一门的课程每门课程可以有多个教师教授各位老师的上课地点及上课时间有所不同注意一门课程至少有一位教师教授否则这门课程就视为不存在每位学生可以同时选修多门不同的课程一门课程至少要有10位学生选修否则就取消这门课程的开设注意选修课程时要指定任课教师不能重复选修同一门课程课程结束后任课教师给选修该课程的学生一个成绩Grade注意教师不能给没有选修他所教授课程的学生成绩即使选修了其他教师教授的同一门课也不行图2-1是经分析得到的E-R图[图2-1]根据题意给出联系的属性实体间的联系有一对一一对多和多对多指出各联系分别属于哪一种
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过[Java代码]//Builder.jav__件public1classBuilderpublicabstractvoidmakeTitleStringtitle;publicabstractvoidmakeStringStringstr;publicabstractvoidmakeItemsString[]items;publicabstractObjectgetResult;//Director.jav__件publicclassDirectorprivate2builder;publicDirectorBuilderbuilderthis.builder=builder;publicObjectconstructbuilder.makeTitleGreeting;builder.makeString从早上到白天结束;builder.makeItemsnewString[]早安午安;builder.makeString到了晚上;builder.makeItemsnewString[]晚安好梦;returnbuilder.getResult;//TextBuilder.jav__件publicclassTextBuilder3BuilderprivateStringBufferbuffer=newStringBuffer;publicvoidmakeTitleStringtitlebuffer.append『+title+』/n/n;publicvoidmakeStringStringstrbuffer.append’■’+str+/n/n;publicvoidmakeItemsString[]itemsforinti=0;i
[说明]假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为m=a[k]×10k-2+a[k-1]×10k-3++a[3]×10+a[2]其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注意不考虑溢出情况即数组足够大[函数]intcmpint*LAint*LB;/*比较长整数LA与LB的绝对值大小*//*若LA绝对值较大返回正值LA较小返回负值相等则返回0*/intADDint*LAint*LBint*LC/*计算长整数LA与LB的和结果存储于LC中*//*注意正数与负数的和相当于正数与负数绝对值的差*//*数据有误返回0正常返回1*/ifLA==NULL||LB==NULL||LC==NULLreturn0;int*pA*pBiNcarryflag;flag=LA[0]+LB[0];switchflag/*根据参与运算的两个数的符号进行不同的操作*/case0:case2:Lc[0]=LA[0];/*LA与LB同号结果符号与LALB相同*/pA=LA;pB=LB;1;break;case1:/*LA与LB异号*//*比较两者的绝对值大小结果符号与较大者相同*/flag=2;ifflag>0/*LA较大*/LC[0]=LA[0];pA=LA;pB=LB;elseifflag<0/*LB较大*/LC[0]=LB[0];pA=LB;pB=LA;else/*LA与LB相等*/LC[0]=0;LC[1]=0;return1;flag=-1;break;default:return0;break;/*switch*//*绝对值相加减*//*注意对于减法pA指向较大数pB指向较小数不可能出现不够减情况*/3;N=LA[1]>LB[1]LA[1]:LB[1];fori=0;i
=pA[1]/*LA计算完毕*/carry+=flag*pB[i+2];elseifi>=pB[1]/*LB计算完毕*/carry+=pA[i+2];elsecarry+=pA[i+2]+flag*pB[i+2];LC[i+2]=carry%10;carry/=10;if4/*需要借位针对减法*/LC[i+2]+=10;carry--;/*for*/if5/*最高进位针对加法*/LC[i+2]=carry;i++;ifLC[i+1]==0i--;/*若最高位为零针对减法*/LC[1]=i;return1;;/*ADD*/
[说明]在进行文法分析的时候通常需要检测一个单词是否在我们的单词列表里为了提高查找和定位的速度通常都要画出与单词列表所对应的单词查找树程序构造一棵二叉排序树每个节点存储一个单词按字典序列较小的在左子树较大的在右子树函数中使用的预定义符号如下typedefstructTreeNode/*二叉排序树节点*/char*word;structTreeNode*left*right;BNODE;[函数]intgetWordFILE*fptchar*word/*从文件fpt中读取单词到word中到达文件结束时返回0*/charc;c=fgetcfpt;ifc==EOFreturn0;/*跳过单词间的非字母字符*/while!tolowerc>=’a’&&tolowerc=’a’&&tolowerc0ptr->right:ptr->left;ptr=BNODE*mallocsizeofptr;ptr->left=ptr->right=NULL;ptr->word=char*mallocstrlenword+1;strcpyptr->wordword;ifp==NULL4;elseifcompres>0p->right=ptr;elsep->left=ptr;intmainFILE*fpt;charword[40];BNODE*root=NULL;iffpt=fopentext.inr==NULLprintf不能打开文件text.in!/n;return1;whilegetWordfptword==1BTree5;fclosefpt;return0;
[说明]图3-1描述某超市销售数据的部分处理流程超市中有若干台收款机和若干名收款员这里我们把一个收款员开始使用一台收款机到离开这台收款机称为该收款员的一次作业作业开始时收款员先在收款机上输入收款员号和作业前金额作业前金额是为了销售时的找零而在作业前预先放入钱柜的金额数作业结束时收款员要打开钱柜取走全部现金并把这些现金的金额数称为作业后金额输入收款机当作业前金额+本次作业售货总金额-本次作业退货总金额≠作业后金额时表示这次作业存在金额差错本流程图已作简化并作以下假定该超市只有现金交易不用信用卡和礼券一个收款员因某种原因如吃饭在一天中可以有多个作业销售方式只有售货和退货两种整个超市分成若干部门如食品部服装部系统按部门统计一个月中各类货物的销售数量和金额最后根据月销售计划文件分析各部门完成销售计划的情况系统还统计每个收款员的差错情况和退货情况图中处理4和处理8每月的最后一天执行一次营业结束后其他处理每天执行一次图中部分数据文件的记录格式如下日销售数据收款机号+收款员号+作业前金额+售货标记|退货标记+货号+数量+单价+金额+作业后金额日销售文件记录作业开始标记+收款机号+收款员号+作业前金额|售货标记|退货标记+货号+数量+金额|作业结束标记+收款机号+收款员号+作业后金额部门目销售文件记录部门号+售货标记|退货标记+货号+数量+金额部门月销售计划文件记录部门号+月计划金额收款员差错月报月份+收款员号+差错作业数+差错总金额收款员退货月报月份+收款员号+退货次数+退货总金额其中w表示w重复出现多次a|b表示a或ba+b表示a与b[图3-1]处理1能检查出日销售数据中的哪些错误
[说明]假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为m=a[k]×10k-2+a[k-1]×10k-3++a[3]×10+a[2]其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注意不考虑溢出情况即数组足够大[函数]intcmpint*LAint*LB;/*比较长整数LA与LB的绝对值大小*//*若LA绝对值较大返回正值LA较小返回负值相等则返回0*/intADDint*LAint*LBint*LC/*计算长整数LA与LB的和结果存储于LC中*//*注意正数与负数的和相当于正数与负数绝对值的差*//*数据有误返回0正常返回1*/ifLA==NULL||LB==NULL||LC==NULLreturn0;int*pA*pBiNcarryflag;flag=LA[0]+LB[0];switchflag/*根据参与运算的两个数的符号进行不同的操作*/case0:case2:Lc[0]=LA[0];/*LA与LB同号结果符号与LALB相同*/pA=LA;pB=LB;1;break;case1:/*LA与LB异号*//*比较两者的绝对值大小结果符号与较大者相同*/flag=2;ifflag>0/*LA较大*/LC[0]=LA[0];pA=LA;pB=LB;elseifflag<0/*LB较大*/LC[0]=LB[0];pA=LB;pB=LA;else/*LA与LB相等*/LC[0]=0;LC[1]=0;return1;flag=-1;break;default:return0;break;/*switch*//*绝对值相加减*//*注意对于减法pA指向较大数pB指向较小数不可能出现不够减情况*/3;N=LA[1]>LB[1]LA[1]:LB[1];fori=0;i
=pA[1]/*LA计算完毕*/carry+=flag*pB[i+2];elseifi>=pB[1]/*LB计算完毕*/carry+=pA[i+2];elsecarry+=pA[i+2]+flag*pB[i+2];LC[i+2]=carry%10;carry/=10;if4/*需要借位针对减法*/LC[i+2]+=10;carry--;/*for*/if5/*最高进位针对加法*/LC[i+2]=carry;i++;ifLC[i+1]==0i--;/*若最高位为零针对减法*/LC[1]=i;return1;;/*ADD*/
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的大对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图5-1显示了各个类间的关系[图5-1]以下是C++语言实现能够正确编译通过[C++代码]classBuilderpublic:virtualvoidmakeTitlestringtitle=0;virtualvoidmakestringstringstr=0;virtualvoidmakeItems1items=0;virtualstringgetResult=0;;classDirectorprivate:2builder;public:DirectorBuilder*builderthis->builder=builder;stringconstructvectoritems;items.push_back早安;items.push_back午安;builder->makeTitleGreeting;builder->makeString从早上到白天结束;builder->makeItemsitems;builder->makeString到了晚上;3;//清空items向量items.push_back晚安;items.push_back好梦;builder->makeItemsitems;returnbuilder->getResult;;classTextBuilder:public4private:stringbuffer;public:TextBuilderbuffer=;voidmakeTitlestringtitlebuffer+========================================/n;buffer+=『+title+』/n;buffer+=/n;voidmakeStringstringstrbuffer+=■+str+/n;buffer+=/n;voidmakeItemsvectoritemsvector::iteratorit;forit=items.begin;it!=items.end;it++buffer+=.+*it+/n;buffer+=/n;stringgetResultbuffer+=========================/n;returnbuffer;;intmainDirector*director=newDirectornewTextBuilder;stringresult=stringdirector-5;cout
[说明] 对多个元素的聚合进行遍历访问时需要依次推移元素例如对数组通过递增下标的方式数组下标功能抽象化一般化的结果就称为迭代器Iterator模式以下程序模拟将书籍Book放到书架BookShelf上并依次输出书名这样就要涉及到遍历整个书架的过程使用迭代器Iterator实现图7-1显示了各个类间的关系以下是JAVA语言实现能够正确编译通过 [图7-1] [C代码] typedefbool*fun1; typedef1*fun2; constintBOOK_MAX=10;//最大书本数 structBook charname30; ; structBookShelf//书架 structBookbooks[BOOKMAX]; intindex;//书架上最后一本书的下标加1即下一本书的下标如0表示有0本书 ; StructBook*getBookAtstructBookShelf*BSintindex //从书架BS上取得下标为index的书 //只有当下标大于等于0且不大于当前书架上的最后一本书对应的下标才取书成功 //否则失败返回NULL ifindex>=0&&2 return&BS->books[index]; returnNULL; boolappendBookstructBookShelf*BSstructBookbook ifBS->index<BOOK_MAX BS->books[BS->index++]=book; returntrue; returnfalse; intgetLengthstructBookShelf*bookShelf returnbookShelf->index; structIterator//迭代器 fun1hasNext;//判断是否还有下一个元素 fun2next;//取得下一个元素 ; structBookshelfIteratorf//书架迭代器 intindex; struetBookShelf*bookShelf; bookShelfIterator=0NULL; boolBShasNext//判断是否还有下一本书 ifbookShelfIterator.index returntrue; else returnfalse; structBook*BSnext//取得下一本书并将index加1以便下一次正确访问 returngetBookAtbookShelfIterator.bookShelf 3; voidmain structBookShelfbookShelf; bookShelf.index=0; //将书籍上架省略代码 //将bookShelf与bookShelfIterator相关联 bookShelfIterator.bookShelf=4; structIteratoriterator; iterator.hasNext=BShasNext; iterator.next=BSnext; structBook*b; while5//遍历书架输出书名 b=iterator.next; printf"%s/n"b->name; 5处填
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式中以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C++语言实现能够正确编译通过[C++代码]classHandprivate:inthandvalue;staticHand*hand0;staticHand*hand1;staticHand*hand2;1;Handinthandvaluethis->handvalue=handvalue;public:2Hand*getHandinthandvalue/*省略具体实现*/;Hand*Hand::hand0=newHand0;Hand*Hand::hand1=newHand1;Hand*Hand::hand2=newHand2;classStrategypublic:3Hand*nextHand=0;;classWinningStrategy:publicStrategyprivate:boolwon;Hand*prevHand;public:winningStrategywon=false;Hand*nextHandif!wonprevHand=Hand::getHandrand%3;returnprevHand;;classprobstrategy:publicStrategypublic:Hand*nextHandinthandvalue=0;/*省略具体实现*/returnHand::getHandhandvalue;;classPlayerprivate:stringname;Strategy*strategy;public:Playerstringname4strategythis->name=name;this->strategy=strategy;Hand*nextHand//向战略请示手势return5;;
[说明]一个新的音像商店准备向比较广泛的人群出租录像带和光碟该商店的管理决定在计算机系统的支持下来运作音像商店在货架上存放着题材广泛的当前流行的电影库由于同一个电影片名可能有于不同的导演而有不同的版本因此电影用电影代码区分而不用电影片名同一个版本有多份拷贝因此音像制品用一个唯一的编号标识某个特定的电影可以存放在录像带或光碟上录像带和光碟的租金不同录像带要么是Beta格式要么是VHS格式光碟为DVD格式容量比较大一张光碟可以存储同一电影片名的不同版本每个电影都有特定的租用期用天表示并带有在租用期内的租金音像商店必须能够立即回答关于某个电影的库存和有多少供租用的带子或光碟音像商店的店员负责定购音像联系客户音像上架并对客户的询问给出答复该系统采用面向对象方法开发系统中的类以及类之间的关系用UML类图表示图1-1是该系统的用例图图1-2是该系统的类图的一部分[图1-1][图1-2]根据题意给出电影类的主要属性
[说明]在进行文法分析的时候通常需要检测一个单词是否在我们的单词列表里为了提高查找和定位的速度通常都要画出与单词列表所对应的单词查找树程序构造一棵二叉排序树每个节点存储一个单词按字典序列较小的在左子树较大的在右子树函数中使用的预定义符号如下typedefstructTreeNode/*二叉排序树节点*/char*word;structTreeNode*left*right;BNODE;[函数]intgetWordFILE*fptchar*word/*从文件fpt中读取单词到word中到达文件结束时返回0*/charc;c=fgetcfpt;ifc==EOFreturn0;/*跳过单词间的非字母字符*/while!tolowerc>=’a’&&tolowerc=’a’&&tolowerc0ptr->right:ptr->left;ptr=BNODE*mallocsizeofptr;ptr->left=ptr->right=NULL;ptr->word=char*mallocstrlenword+1;strcpyptr->wordword;ifp==NULL4;elseifcompres>0p->right=ptr;elsep->left=ptr;intmainFILE*fpt;charword[40];BNODE*root=NULL;iffpt=fopentext.inr==NULLprintf不能打开文件text.in!/n;return1;whilegetWordfptword==1BTree5;fclosefpt;return0;
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是Java语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[Java代码]//Hand.jav__件publicclassHandpublicstaticfinalintHANDVALUE_GUU=0;//石头publicstaticfinalintHANDVALUE_CHO=1;//剪刀publicstaticfinalintHANDVALUE_PAA=2;//布publicstaticfinalHand[]hand=newHandHANDVALUE_GUUnewHandHANDVALUE_CHOnewHandHANDVALUE_PAA;privateinthandvalue;1Handinthandvaluethis.handvalue=handvalue;public2HandgetHandinthandvalue//从值取得对象实例returnhand[handvalue];//Strategy.jav__件publicinterfaceStrategypublic3HandnextHand;//ProbStrategy.jav__件importjava.util.Random;publicclassProbStrategyimplementsStrategypublicHandnextHandinthandvalue=0;/*省略具体实现*/returnHand.getHandhandvalue;//WinningStrategy.jav__件importjava.util.Random;publicclassWinningStrategyimplementsStrategy/*省略了不相关属性*/publicHandnextHandif!wonprevHand=Hand.getHandrandom.nextInt3;returnprevHand;//Player.jav__件publicclassPlayerprivateStringname;privateStrategystrategy;publicPlayerStringname4strategythis.name=name;this.strategy=strategy;publicHandnextHand//向战略请示手势return5;
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过[Java代码]//Builder.jav__件public1classBuilderpublicabstractvoidmakeTitleStringtitle;publicabstractvoidmakeStringStringstr;publicabstractvoidmakeItemsString[]items;publicabstractObjectgetResult;//Director.jav__件publicclassDirectorprivate2builder;publicDirectorBuilderbuilderthis.builder=builder;publicObjectconstructbuilder.makeTitleGreeting;builder.makeString从早上到白天结束;builder.makeItemsnewString[]早安午安;builder.makeString到了晚上;builder.makeItemsnewString[]晚安好梦;returnbuilder.getResult;//TextBuilder.jav__件publicclassTextBuilder3BuilderprivateStringBufferbuffer=newStringBuffer;publicvoidmakeTitleStringtitlebuffer.append『+title+』/n/n;publicvoidmakeStringStringstrbuffer.append’■’+str+/n/n;publicvoidmakeItemsString[]itemsforinti=0;i
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[C代码]typedef1*funl;enumHandValueHANDVALUE_GUU=0HANDVALUE_CHO=1HANDVALUE_PAA=2;//手势可取值依次为石头剪刀布//其大小顺序是循环相克的即石头赢剪刀剪刀赢布布赢石头boolwon;structHand*WSprevHand;structHand//手势enumHandValuehandvalue;hand[3]=HANDVALUE_GUUHANDVALUE_CHOHANDVALUE_PAA;intfightstructHand*h1structHand*h2//比较h1和h2h1代表的手势较大时返回1h1较小时返回-1相等时返回0//ifh1->handvalue==h2->handvaluereturn0;elseifh1->handvalue+1%2==h2>handvaluereturn1;elsereturn-1;structHand*getHandinthandvalue//依据手势代表的值取得手势若handvalue不合法返回NULLswitchhandvaluecase0:return&hand[0];break;case1:return&hand[1];bteak;case2;return&hand[2];break;return3;structStrategy//策略funlnextHand;//下一个手势;structHand*WSnextHandif!wonPSprevHand=getHandrand%3;returnPSprevHand;structPlayercharname[20];4strategy;//策略intwincount;intlosecount;intgamecount;;voidmainStrategyWS;WS.nextHand=WSnextHand;WSpreVHand=NULL;structPlayerWSplayer;5WSplayer.nameww;WSplayer.wincount=0;WSplayer.losecount=0;WSplayer.gamecount=0;WSplayer.strategy=&WS;
[说明]假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为m=a[k]×10k-2+a[k-1]×10k-3++a[3]×10+a[2]其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注意不考虑溢出情况即数组足够大[函数]intcmpint*LAint*LB;/*比较长整数LA与LB的绝对值大小*//*若LA绝对值较大返回正值LA较小返回负值相等则返回0*/intADDint*LAint*LBint*LC/*计算长整数LA与LB的和结果存储于LC中*//*注意正数与负数的和相当于正数与负数绝对值的差*//*数据有误返回0正常返回1*/ifLA==NULL||LB==NULL||LC==NULLreturn0;int*pA*pBiNcarryflag;flag=LA[0]+LB[0];switchflag/*根据参与运算的两个数的符号进行不同的操作*/case0:case2:Lc[0]=LA[0];/*LA与LB同号结果符号与LALB相同*/pA=LA;pB=LB;1;break;case1:/*LA与LB异号*//*比较两者的绝对值大小结果符号与较大者相同*/flag=2;ifflag>0/*LA较大*/LC[0]=LA[0];pA=LA;pB=LB;elseifflag<0/*LB较大*/LC[0]=LB[0];pA=LB;pB=LA;else/*LA与LB相等*/LC[0]=0;LC[1]=0;return1;flag=-1;break;default:return0;break;/*switch*//*绝对值相加减*//*注意对于减法pA指向较大数pB指向较小数不可能出现不够减情况*/3;N=LA[1]>LB[1]LA[1]:LB[1];fori=0;i
=pA[1]/*LA计算完毕*/carry+=flag*pB[i+2];elseifi>=pB[1]/*LB计算完毕*/carry+=pA[i+2];elsecarry+=pA[i+2]+flag*pB[i+2];LC[i+2]=carry%10;carry/=10;if4/*需要借位针对减法*/LC[i+2]+=10;carry--;/*for*/if5/*最高进位针对加法*/LC[i+2]=carry;i++;ifLC[i+1]==0i--;/*若最高位为零针对减法*/LC[1]=i;return1;;/*ADD*/
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的大对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图5-1显示了各个类间的关系[图5-1]以下是C++语言实现能够正确编译通过[C++代码]classBuilderpublic:virtualvoidmakeTitlestringtitle=0;virtualvoidmakestringstringstr=0;virtualvoidmakeItems1items=0;virtualstringgetResult=0;;classDirectorprivate:2builder;public:DirectorBuilder*builderthis->builder=builder;stringconstructvectoritems;items.push_back早安;items.push_back午安;builder->makeTitleGreeting;builder->makeString从早上到白天结束;builder->makeItemsitems;builder->makeString到了晚上;3;//清空items向量items.push_back晚安;items.push_back好梦;builder->makeItemsitems;returnbuilder->getResult;;classTextBuilder:public4private:stringbuffer;public:TextBuilderbuffer=;voidmakeTitlestringtitlebuffer+========================================/n;buffer+=『+title+』/n;buffer+=/n;voidmakeStringstringstrbuffer+=■+str+/n;buffer+=/n;voidmakeItemsvectoritemsvector::iteratorit;forit=items.begin;it!=items.end;it++buffer+=.+*it+/n;buffer+=/n;stringgetResultbuffer+=========================/n;returnbuffer;;intmainDirector*director=newDirectornewTextBuilder;stringresult=stringdirector-5;cout
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式中以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C++语言实现能够正确编译通过[C++代码]classHandprivate:inthandvalue;staticHand*hand0;staticHand*hand1;staticHand*hand2;1;Handinthandvaluethis->handvalue=handvalue;public:2Hand*getHandinthandvalue/*省略具体实现*/;Hand*Hand::hand0=newHand0;Hand*Hand::hand1=newHand1;Hand*Hand::hand2=newHand2;classStrategypublic:3Hand*nextHand=0;;classWinningStrategy:publicStrategyprivate:boolwon;Hand*prevHand;public:winningStrategywon=false;Hand*nextHandif!wonprevHand=Hand::getHandrand%3;returnprevHand;;classprobstrategy:publicStrategypublic:Hand*nextHandinthandvalue=0;/*省略具体实现*/returnHand::getHandhandvalue;;classPlayerprivate:stringname;Strategy*strategy;public:Playerstringname4strategythis->name=name;this->strategy=strategy;Hand*nextHand//向战略请示手势return5;;
内存按字节编址地址从A0000H到EFFFFH共有1字节若用存储容量为16KB的存储芯片构成该内存至少需要2 1
[说明] 对多个元素的聚合进行遍历访问时需要依次推移元素例如对数组通过递增下标的方式数组下标功能抽象化一般化的结果就称为迭代器Iterator模式以下程序模拟将书籍Book放到书架BookShelf上并依次输出书名这样就要涉及到遍历整个书架的过程使用迭代器Iterator实现图7-1显示了各个类间的关系以下是JAVA语言实现能够正确编译通过 [图7-1] [C代码] typedefbool*fun1; typedef1*fun2; constintBOOK_MAX=10;//最大书本数 structBook charname30; ; structBookShelf//书架 structBookbooks[BOOKMAX]; intindex;//书架上最后一本书的下标加1即下一本书的下标如0表示有0本书 ; StructBook*getBookAtstructBookShelf*BSintindex //从书架BS上取得下标为index的书 //只有当下标大于等于0且不大于当前书架上的最后一本书对应的下标才取书成功 //否则失败返回NULL ifindex>=0&&2 return&BS->books[index]; returnNULL; boolappendBookstructBookShelf*BSstructBookbook ifBS->index<BOOK_MAX BS->books[BS->index++]=book; returntrue; returnfalse; intgetLengthstructBookShelf*bookShelf returnbookShelf->index; structIterator//迭代器 fun1hasNext;//判断是否还有下一个元素 fun2next;//取得下一个元素 ; structBookshelfIteratorf//书架迭代器 intindex; struetBookShelf*bookShelf; bookShelfIterator=0NULL; boolBShasNext//判断是否还有下一本书 ifbookShelfIterator.index returntrue; else returnfalse; structBook*BSnext//取得下一本书并将index加1以便下一次正确访问 returngetBookAtbookShelfIterator.bookShelf 3; voidmain structBookShelfbookShelf; bookShelf.index=0; //将书籍上架省略代码 //将bookShelf与bookShelfIterator相关联 bookShelfIterator.bookShelf=4; structIteratoriterator; iterator.hasNext=BShasNext; iterator.next=BSnext; structBook*b; while5//遍历书架输出书名 b=iterator.next; printf"%s/n"b->name; 3处填
[说明]一个新的音像商店准备向比较广泛的人群出租录像带和光碟该商店的管理决定在计算机系统的支持下来运作音像商店在货架上存放着题材广泛的当前流行的电影库由于同一个电影片名可能有于不同的导演而有不同的版本因此电影用电影代码区分而不用电影片名同一个版本有多份拷贝因此音像制品用一个唯一的编号标识某个特定的电影可以存放在录像带或光碟上录像带和光碟的租金不同录像带要么是Beta格式要么是VHS格式光碟为DVD格式容量比较大一张光碟可以存储同一电影片名的不同版本每个电影都有特定的租用期用天表示并带有在租用期内的租金音像商店必须能够立即回答关于某个电影的库存和有多少供租用的带子或光碟音像商店的店员负责定购音像联系客户音像上架并对客户的询问给出答复该系统采用面向对象方法开发系统中的类以及类之间的关系用UML类图表示图1-1是该系统的用例图图1-2是该系统的类图的一部分[图1-1][图1-2]根据题意补充图1-2的类图中缺失的类之间的关系用UML表示法表示要求标出重复度在UML中重复度Multiplicity定义了某个类的一个实例可以与另一个类的多少个实例相关联通常把它写成一个表示取值范围的表达式或者一个具体的值
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图7-1显示了各个类间的关系[图7-1]以下是C语言实现能够正确编译通过[C代码]typedefvoid1char*title;typedefvoid*fun2charitems[][10]intN;typedefchar**fun3;charbuffer[500];structBuilder//构造器fun1makeTitle;2makeString;fun2makeItems;fun3getResult;;structDirectorstructBuilderbuilder;;char*construct3director//构造文件charitems[2][10]=早安午安;director->builder.makeTitleGreeting;director->builder.makeString从早上到白天结束;director->builder.makeItemsitems2;director->builder.makeString到了晚上;strcpyitems[0]晚安;strcpyitems[1]好梦;director->builder.makeItemsitems2;returndirector->builder.getResult;voidTXTmakeTitlechar*titlestrcatbuffer『;Strcatbuffertitle;strcatbuffer』/n/n;voidTXTmakeStringchar*strstrcatbuffer■;Strcatbufferstr;strcatbuffer/n/n;voidTXTmakeItemscharitems[][10]intN//将items加入文件中forinti=0i
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是Java语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[Java代码]//Hand.jav__件publicclassHandpublicstaticfinalintHANDVALUE_GUU=0;//石头publicstaticfinalintHANDVALUE_CHO=1;//剪刀publicstaticfinalintHANDVALUE_PAA=2;//布publicstaticfinalHand[]hand=newHandHANDVALUE_GUUnewHandHANDVALUE_CHOnewHandHANDVALUE_PAA;privateinthandvalue;1Handinthandvaluethis.handvalue=handvalue;public2HandgetHandinthandvalue//从值取得对象实例returnhand[handvalue];//Strategy.jav__件publicinterfaceStrategypublic3HandnextHand;//ProbStrategy.jav__件importjava.util.Random;publicclassProbStrategyimplementsStrategypublicHandnextHandinthandvalue=0;/*省略具体实现*/returnHand.getHandhandvalue;//WinningStrategy.jav__件importjava.util.Random;publicclassWinningStrategyimplementsStrategy/*省略了不相关属性*/publicHandnextHandif!wonprevHand=Hand.getHandrandom.nextInt3;returnprevHand;//Player.jav__件publicclassPlayerprivateStringname;privateStrategystrategy;publicPlayerStringname4strategythis.name=name;this.strategy=strategy;publicHandnextHand//向战略请示手势return5;
[说明]为了有效记录交通事故情况欲设计一个交通事故记录系统一辆汽车有一个唯一的车牌号车主购买汽车时需要提供相关信息包括身份证姓名年龄性别地址等一个车主可以拥有多辆汽车而一辆汽车只有一个车主驾驶员不一定是车主因此记录交通事故时要记录驾驶员身份证号同时记录事故发生时刻图2-1描绘了人汽车交通事故三个实体类型及实体间联系的一个E-R图[图2-1]对应的关系模式为·人身份证号姓名性别年龄地址·汽车车牌号型号·事故车牌号身份证号时刻损失描述·拥有身份证号车牌号创建人表时身份证号使用INTEGER数据类型并且要求此列值不能为空值惟一姓名列不能为空请在下列用于创建表人的SQL语句空缺处填入正确的内容CREATETABLE人身份证号INTEGER姓名CHAR201性别CHAR1年龄INTEGER地址CHAR202
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式中以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C++语言实现能够正确编译通过[C++代码]classHandprivate:inthandvalue;staticHand*hand0;staticHand*hand1;staticHand*hand2;1;Handinthandvaluethis->handvalue=handvalue;public:2Hand*getHandinthandvalue/*省略具体实现*/;Hand*Hand::hand0=newHand0;Hand*Hand::hand1=newHand1;Hand*Hand::hand2=newHand2;classStrategypublic:3Hand*nextHand=0;;classWinningStrategy:publicStrategyprivate:boolwon;Hand*prevHand;public:winningStrategywon=false;Hand*nextHandif!wonprevHand=Hand::getHandrand%3;returnprevHand;;classprobstrategy:publicStrategypublic:Hand*nextHandinthandvalue=0;/*省略具体实现*/returnHand::getHandhandvalue;;classPlayerprivate:stringname;Strategy*strategy;public:Playerstringname4strategythis->name=name;this->strategy=strategy;Hand*nextHand//向战略请示手势return5;;
[说明]某学校的教学系统描述如下学生信息包括学号Sno姓名Sname性别Ssex年龄Sage入学年份Syear主修专业Smajor其中学号是入学时唯一编定的教师信息包括教工号Tno姓名Tname性别Tsex年龄Tage职称Title其中教工号是唯一编定的课程信息包括课程号Cno课程名称Cname学时Cpeiiod学分Ccredit其中课程号是唯一编定的每个专业每个年级只有一个班级这样班级就可用入学年份标识每位教师只教授特定的一门的课程每门课程可以有多个教师教授各位老师的上课地点及上课时间有所不同注意一门课程至少有一位教师教授否则这门课程就视为不存在每位学生可以同时选修多门不同的课程一门课程至少要有10位学生选修否则就取消这门课程的开设注意选修课程时要指定任课教师不能重复选修同一门课程课程结束后任课教师给选修该课程的学生一个成绩Grade注意教师不能给没有选修他所教授课程的学生成绩即使选修了其他教师教授的同一门课也不行图2-1是经分析得到的E-R图[图2-1]若用Student表存储学生信息Teacher表存储教师信息Course表存储课程信息Study表存储学生选修课程情况教务处想要查询2006年入学的计算机专业CS的学生中平均成绩在85分以上的学生信息请将以下SQL语句补充完整注用对应英文表示SELECT*FROMstudentWHERESmajor=CSANDSyear=2006AND1SELECTSnoFROMStudyGROUPBYSnoHAVING2
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过[Java代码]//Builder.jav__件public1classBuilderpublicabstractvoidmakeTitleStringtitle;publicabstractvoidmakeStringStringstr;publicabstractvoidmakeItemsString[]items;publicabstractObjectgetResult;//Director.jav__件publicclassDirectorprivate2builder;publicDirectorBuilderbuilderthis.builder=builder;publicObjectconstructbuilder.makeTitleGreeting;builder.makeString从早上到白天结束;builder.makeItemsnewString[]早安午安;builder.makeString到了晚上;builder.makeItemsnewString[]晚安好梦;returnbuilder.getResult;//TextBuilder.jav__件publicclassTextBuilder3BuilderprivateStringBufferbuffer=newStringBuffer;publicvoidmakeTitleStringtitlebuffer.append『+title+』/n/n;publicvoidmakeStringStringstrbuffer.append’■’+str+/n/n;publicvoidmakeItemsString[]itemsforinti=0;i
热门题库
更多
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术