单选题 (41) is a protocol that a host uses to inform a router when it joins or leaves an Internet multicast group. (42) is an error detection code that most data communication networks use. (43) is an interior gateway protocol that uses a distance vector algorithm to propagate routing information. (44) is a transfer mode in which all types of information are organized into fixed form cells on an asynchronous or non-periodic basis over a range of media. (45) is an identifier of a web page.
单选题基于构件的软件开发,强调使用可复用的软件“构件”来设计和构建软件系统,对所需的构件进行合格性检验、______,并将它们集成到新系统中。
单选题已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3;类P和类Q是类O的派生类,其继承方式如下所示。 class P:protected O; class Q:public O…; 关于方法F1的描述中正确的是 (9) ;关于方法F2的描述中正确的是 (10) ;关于方法F3的描述中正确的是 (11) 。
单选题给定数据结构(V,E),y为节点的有限集合,V=V1,V2,V3,V4,V5,V6,V7,V8),E是V上关系的集合。 E=<V1,V2>,<V3,V4),<V5,V6>,<V5,V6>,<V1,V3>,<V4,V7>,<V4,V5>,<V2,V4>,<V4,V6>),它所对应的图形是 (42) ,这是 (43) 。 图的存储结构主要有邻接表和 (44) ,若用邻接表来存储一个图,则需要保存一个 (45) 存储的节点表和若干个 (46) 存储的关系表(又称边表)。
单选题对于故障管理,下列说法正确的是 A)软件容错最完全的方法是设计两套相同的数据库系统同时工作,数据的变化也同步,空间有一定的距离,因此同时破坏两套系统的概率几乎为零,这样就能达到数据库的完全安全 B)动态转储虽然提高了数据库的可用性,但是数据的有效性却迟迟得不到保证 C)介质故障是指数据库在运行过程中,系统突然停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的故障。 D)在数据库系统中,事务日志能够实现数据存储
单选题Open Shortest Path First (OSPF) is a (66) routing algorithm that (67) work done on the OSI IS-IS intradomain routing protocol. This routing, as compared to distance-vector routing, requires (68) processing power. The (69) algorithm is used to calculate routes. OSPF routing table updates only take place when necessary, (70) at regular intervals.
单选题在关系代数运算中,关系S,SP和R如表7-11~表7-13所示。若先 (29) ,则可以从 S和SP获得R。其对应的关系表达式为 (30) 。如下的SQL语句可以查询销售总量大于 1000的部门号。Select部门名From S Where部门号in(Select部门号From SP Group by (31) )关系表S关系表SP关系表R 表7-11 关系表S 部门号 部门名 010 家电部 021 百货部 030 食品部 035 五金部 表7-12关系表SP 部门号 商品号 销售量 010 01020210 500 010 01020211 780 010 01020212 990 021 02110200 580 025 02520100 1290 035 03530311 4680 表7-13 关系表R 部门号 商品号 销售量 家电部 01020210 500 家电部 01020211 780 家电部 01020212 990
单选题归并排序采用的算法设计方法属于______。
单选题拓扑序列是无环有向图中所有顶点的一个线性序列,图中任意路径中的各个顶点在该图的拓扑序列中保持先后关系,(26)为图8-7所示有向图的一个拓扑序列。A.1234567B.1526374C.5126347D.5123764
单选题在选择开发方法时,有些情况不适合使用原型法,以下选项中不能使用快速原型法的情况是______。
单选题
问答题阅读下列说明和C代码,回答下面问题。
[说明]
采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排序的子数组得到排序结果。
下面的C代码是对上述归并算法的实现,其中的常量和变量说明如下。
●art:待排序数组。
●p,q,r:一个子数组的位置从p到q,另一个子数组的位置从q+1到r。
●begin,end:待排序数组的起止位置。
●left,right:临时存放待合并的两个子数组。
●n1,n2:两个子数组的长度。
●i,j,k:循环变量。
●mid:临时变量。
[C代码]
#inciude<stdio.h>
#inciude<stdlib.h>
Define MAX 65536
void merge(int art([],int p,int q,int r)
{
int*left,*right;
int n1,n2,I,j,k;
n1=q-p+1;
n2=r-q;
If(left=(int*)malloc((n1+1)*sizeof(int)))=NULL)
{
Perror("malloc error");
exit(1);
}
If((right=(int*)malloc((n2+1)*sizeof(int)))=NULL)
{
Perror("malloc error");
exit(1);
}
for(i=0;i<n1;i++)
{
left[i]=art[p+i];
}
left[i]=MAX;
for(i=0;i<n2;i++)
{
right[i]=arr[q+i+1]
}
right[i]=MAX;
i=0;j=0;
For(k=p;(1);k++)
{
If(left[i]>right[j]
{
______
j++;
}
else
{
arr[k1]=left[i];
i++;
}
}
}
Void merge Sort(int art(),int begin,int end)
{
int mid;
if(______)
{
mid=(begin+end)/2;
merge Sort(art,begin,mid);
______;
Merge(arr,begin,mid,end);
}
}
问答题阅读下列说明和Java代码,在(n)处填入适当的字句。[说明]现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如图10.17所示。[Java代码]importJava.util.ArrayList;importjava.util.List;(1)classAbstractFileprotectedStringname;publicvoidprintName()System.out.println(name);publicabstractbooleanaddChild(AbstractFilefile);publicabstractbooleanremoveChild(AbstractFilefile);publicabstractList<AbstractFile>getChildren();classFileextendsAbstractFilepublicFile(Stringname)this.name=name;publicbooleanaddChild(AbstractFilefile)returnfalse;publicbooleanremoveChild(AbstractFilefile)returnfalse;publicList<AbstractFile>getChildren()return(2);classFolderextendsAbstractFileprivateList<AbstractFile>childList;publicFolder(Stringname)this.name=name;this.childList=newArrayList<AbstractFile>();publicbooleanaddChild(AbstractFilefile)returnchildList.add(file);publicbooleanremoveChild(AbstractFilefile)returnchildList.remove(file);public(3)<AbstractFile>getChildren()return(4);publicclassClientpublicstaticvoidmain(String[]args)//构造-个树型的文件/目录结构AbstractFilerootFolder=newFolder("c://");AbstractFilecompositeFolder-newFolder("composite");AbstractFilewindowsFolder=newFolder("windows");AbstractFilefile=newFile("TestComposite.java");rootFolder.addChild(compositeFolder);rootFolder.addChild(windowsFolder);compositeFolder.addChild(file);//打印目录文件树printTree(rootFolder);privatestaticvoidprintTree(AbslractFileifile)ifile.printName();List<AbslractFile>children=ifile.getChildren;if(children==null)return;for(AbstractFileifile.children)(5);该程序运行后输出结果为:c:/compositeTestComposite.javaWindows
问答题【问题4】中缀表达式(A+B-C*D)*(E-F)/G经该流程图处理后的输出是什么?
问答题阅读下列说明和C++代码,在(n)处填入适当的字句。[说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如图10.30所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该遥控系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如10.31所示。图10.31中,类RomoteController的方法onPressButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中tumLight(intdegree)方法用于调整电灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。[C++代码]classLight//电灯类public:voidturnLight(intdegree)//调整灯光亮度,0表示关灯,100表示亮度最大;classTV//电视机类public:voidsetChannel(intchannel)//调整电视频道,0表示关机,1表示开机并切换到1频道;classCommand//抽象命令类public:virtualvoidon()=0;virtualvoidoff()=0;;classRemoteController//遥控器类protected:Command*commands[4];//遥控器有4个按钮,按照编号分别对应4个conunand对象public:voidonPressButton(intbutton)//按钮被按下时执行命令对象中的命令if(button%2==0)commands[button]->on();elsecommands[button]->off();voidsetCommand(intbutton,Command*command)(1)=command;//设置每个按钮对应的命令对象;classLightCommand:publicCommand(//电灯命令类protected:Light*light;//指向要控制的电灯对象public:voidon()light->turnLight(100);voidoff()light->(2);LightCommand(Light*light)this->light=light;;classTVCommand:publicCommand//电视机命令类protected:TV*tv;//指向要控制的对象public:voidon()ty->(3);)voidoff()tv->setChannel(0);TVCommand(TV*tv)this->tv=tv;;voidmain()Lightlight;TVtv;//创建电灯和电视对象LightCommandlightComrnand(&light);TVCommandtvCommand(&tv);RemoteControllerremoteController;remoteController.setCommand(0,(4));//设置按钮0的命令对象…//此处省略设置按钮1、按钮2和按钮3的命令对象代码本题中,应用命令模式能够有效让类(5)和类(6)、类(7)之间的耦合性降至最小。
问答题阅读以下说明,回答问题1、问题2和问题3,将解答填入对应栏内。 [说明] 某单位正在使用一套C/S模式的应用软件系统,现在需要升级为B/S应用模式,但需要保持业务的连续性。开发人员提出用Web Service作为中间层的接口进行开发。
问答题【问题1】
数据流图如图1-9(住宅安全系统顶层图)所示中的A和B分别是什么?
问答题阅读以下说明和图,回答下面问题。[说明]某公司欲开发一个管理选民信息的软件系统,对系统的基本需求描述如下。(1)每个人(Person)可以是一个合法选民(Eligible)或者无效的选民(Ineligible)。(2)每个合法选民必须通过该系统对其投票所在区域(即选区,Riding)进行注册(Registration),每个合法选民仅能注册一个选区。(3)选民所属选区由其居住地址(Address)决定。假设每个人只有一个地址,地址可以是镇(Town)或者城市(City)。(4)某些选区可能包含多个镇;而某些较大的城市也可能包含多个选区。现采用面向对象方法对该系统进行分析与设计,得到如下图所示的初始类图。类图
问答题阅读下列说明和C代码,将应填入空白处的语句补充完整。
[说明]
设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量W
ij
和价格C
ij
。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。
采用回溯法来求解该问题。
首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合{1,2,…,m},将解空间用树形结构表示。
接着从根节点开始,以深度优先的方式搜索整个解空间。从根节点开始,根节点成为活节点,同时也成为当前的扩展节点。向纵深方向考虑第1个部件从第1个供应商处购买,得到一个新节点。判断当前的机器价格(C
11
)是否超过上限(cc),重量(W
11
)是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,根节点不再是扩展节点。继续向纵深方向考虑第2个部件从第1个供应商处购买,得到一个新节点。同样判断当前的机器价格(C
11
+C
21
)是否超过上限(cc),重量(W
11
+W
21
)是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,原来的节点不再是扩展节点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活节点为止。
下面是该算法的C语言实现。
(1)变量说明
n:机器的部件数
m:供应商数
cc:价格上限
w[][]:二维数组,w[i][j]表示第j个供应商供应的第i个部件的重量
c[][]:二维数组,c[i][j]表示第j个供应商供应的第i个部件的价格
bestW:满足价格上限约束条件的最小机器重量
bestC:最小重量机器的价格
bestX[]:最优解,一维数组,bestX[i]表示第i个部件来自哪个供应商
cw:搜索过程中机器的重量
cp:搜索过程中机器的价格
x[]:搜索过程中产生的解,x[i]表示第i个部件来自哪个供应商
i:当前考虑的部件,从0到n-1
j:循环变量
(2)函数backtrack
int n=3;
int m=3;
int cc=4;
int w[3][3]={{1, 2, 3}, {3, 2, 1}, {2, 2, 2}};
int c[3][3]={{1, 2, 3}, {3, 2, 1}, {2, 2, 2}};
int bestW=8;
int bestC=0;
int bestX[3]={0, 0, 0};
int cw=0;
int cp=0;
int X[3]={0, 0, 0};
int backtrack(int i){
int j=0;
int found=0;
if(i>n-1){ /*得到问题解*/
bestW=cw;
bestC=cp;
for(j=0; j<n; j++){
______;
}
return 1;
}
if(cp<=cc){ /*有解*/
found=1;
}
for(j=0; ______; j++){
/*第i个部件从第j个供应商购买*/
______;
cw=cw+w[i][j];
cp=cp+c[i][i][j];
if(cp<=cc}
}
/*回溯*/
cw=cw-w[i][j];
______;
}
return found;
}
问答题【问题3】
类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中,提供了4种关系:依赖(Dependency)、概括(Generalization)、关联(Association)和聚集(Aggregation)。请分别说明这4种关系的含义,并说明关联和聚集之间的主要区别。