考试总分:6分
考试类型:模拟试题
作答时间:60分钟
已答人数:967
试卷答案:有
试卷介绍: 2004年上半年软件设计师下午试题
A(1)__;T*tpBody;intiRows,iColumns,iCurrentRow;ArrayBody(intiRsz,intiCsz){tpBody=__
B(2)__;iRows=iRsz;iColumns=iCsz;iCurrentRow=-1:}public;T&operator[](intj){boolrow_error,column_error;row_error=column_error=false;try{if(iCurrentRow=iRows)row_error=true;if(j=iColumns)column_error=true;if(row_error==true||column_error==true)__
C(3)__;}catch(char){if(row_error==true)cerrclassArray{ArrayBodytBody;public;ArrayBody&operator[](inti){__
D(4)__;returntBody;}Array(intiRsz,intiCsz):__
E(5)__{}};voidmain(){Arraya1(10,20);Arraya2(3,5);intb1;doubleb2;•b1=a1[-5][10];//有越界提示:行下标越界[-5]b1=a1[10][15];//有越界提示:行下标越界[10]b1=a1[1][4];//没有越界提示b2=a2[2][6];//有越界提示:列下标越界[6]b2=a2[10][20];//有越界提示;行下标越界[10]列下标越界[20]b2=a2[1][4];//没有越界提示[15分]
A(1)到(4)处的重复度分别为多少?[问题3]类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中,提供了四种关系:依赖(dependency)、概括(generalization)、关联(aassociation)和聚集(aggregation)。请分别说明这四种关系的含义,并说明关联和聚集之间的主要区别。[15分]
A(1)__){/*从树根结点出发查找键值为e的结点*/pp=p;if(edata)p=p->Lchild;elsep=p->Rchild;}if(!p)return-1;/*查找失败*/if(p->Lchiid&&p->Rchild){/*处理情况③*/s=__
B(2)__;pp=p;while(__
C(3)__){pp=s;s=s->Rchild;)p->data=S->data;p=s;}/*处理情况①、②*/if(__
D(4)__)c=p->Lchild;elsec=p->Rchild;if(p==*r)*r=C;elseif(__
E(5)__)pp->Lchild=c;elsepp->Rchild:C;free(p);return0;}[15分]
A(1)__)push(__
B(2)__);push(__
C(3)__);elseif(k==__
D(4)__)if(notempty())pop();pop():else显示错误信息(缺少对应左括号或右括号);显示行号row;显示列号col;endifendifch←nextch();endwhileif(notempty())显示错误信息(缺少对应左括号或右括号);while(notempty())row←pop();col←pop();显示行号row;显示列号col;endwhileendif为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号,方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如下表所示:ch(){}[]其它返回值1234560[算法2-2]将栈stack置空,置EOF为falsech←nextch();while(notEOF)k←kind(ch);if(k>0)if(判断条件1)push(__
E(5)__):push(__
F(6)__);push(__
G(7)__):elseif(判断条件2and判断条件3)pop();pop();pop();else显示错误信息(缺少对应左括号或右括号);显示行号row;显示列号col;endifendifch←nextch();endwhileif(notempty())显示错误信息(缺少对应左括号或右括号);while(notempty())pop();row←pop();col←pop();显示行号row;显示列号col;endwhileendif[问题1]请将[算法2-1]和[算法2-2]中(1)至(7)处补充完整。[问题2]请从下面的选项中选择相应的判断逻辑填补[算法2-2]中的“判断条件广至“判断条件3”。注意,若“判断条件2”的逻辑判断结果为假,就无需对“判断条件3”进行判断。(a)字符是括号(b)字符是左括号(c)字符是右括号(d)栈空(e)栈不空(f)栈顶元素表示的是与当前字符匹配的左括号(g)栈顶元素表示的是与当前字符匹配的右括号[15分]
A(1)__LOOP2LEAGR2,48LOOP3CPLGRO,WDT,GR1JMINEXT__
B(2)__LEAGR2,1,GR2JMPLOOP3NEXT__
C(3)__LEAGR1,1,GR1LEAGR2,-4,GR1JNZLOOP2LAST__
D(4)__;处理个位数__
E(5)__EXITC48DC48WDTDC10000DC1000DC100DC10BTASCDS5DATADC#FA59HEND[15分]