您的位置:
首页 >> 资讯资料 >> IT培训 >> 正文:2005年下半年软件设计师下午试题及答案

2005年下半年软件设计师下午试题及答案

下午试题 
C++题目#include 
const  OBS_MAXNUM=20; 
__(1)___; 
  
class  DocExplorer{ 
public: 
      DocExplorer    ((2)*doc); 
___(3)___  void  update(OfficeDoc  *doc)=0; 
}; 
  
class  OfficeDoc  { 
private: 
      DocExplorer  *myObs[OBS_MAXNUM] 
int  index; 
  
public: 
OfficeDoc(){ 
      index=0; 
void  attach  (DocExplorer  *o){ 
  
if  (index  >=OBS_MAXNUM||o==  NULL)  return; 
for  (int  loop  =  0;  loop      if(myObs[loop]  ==  o)  return; 
myObs[index]  =  o; 
index++; 

void  detach(DocExplorer)  *o{ 
if(o==null)  return; 
for  (int  loop  =  0;loop        if(myObs[loop]==o){ 
                if(loop<=index-2)  myObs[loop]  =  myObs[index-1]; 
                myObs[index-1]=NULL; 
                index--; 
                break; 
                  } 
        } 

  
private: 
        void  notifyObs()  { 
              for(int  loop=0;loop             myObs[loop]->____(4)____; 
                } 
}; 
  
DocExplorer:ocexplorer(OfficeDoc  *doc){ 
      doc->______(5)_____; 
}   
  
试题四: 
散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记录,当桶中已经有m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“益出”。此时需要将第m+1个同义词存放到另一个“益出桶”的桶中。相对的,称存放  前m个同义词的桶称为基桶。益处桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到益处桶中查找。 
为了简化起见,散列文件的存储单位以内存单元表示。 
函数InsertToHashTable(int  NewElemKey)的功能是:若新的元素NewElemKey正确插入散列文件中。则返回1,否则  0。 
采用的散列函数为Hash(NewElemKey)=  NewElemKey%  P,其中P为设定的基桶数目。 
函数中使用的预定仪符号为: 
#define  NULLKEY  –1 /*散列桶的空闲单元标示*/ 
#define  P  7 /*散列文件基桶的数目*/ 
#define  ITEMS  3 /*基桶和益处桶的容量*/ 
typedef  struct  BucketNode{ /*基桶和益处桶的类型定义*/ 
int  KeyData[ITEMS]; 
struct    BucketNode  *link; 
}BUCKET; 
BUCKET  Bucket  
; /*基桶的空间定义*/ 
Int    InsertToHashTable(int  NewElemKey) 
{/*将元素NewElemKey  插入散列桶中插入成功则返回0,否则返回-1  。设插入第一个元素前基桶的所有  KeyData[],link域已分别初始化为NULLKEY,NULL*/ 
int  Index; /*基桶编号*/ 
int  i,k; 
BUCKET  *  s,*front,*t; 
___________(1)________; 
for(I=0;  I<  ITEMS;  I++) /*在基桶查找空闲单元,若找到则将元素存入*/ 
if(Bucket[Index].KeyData  ==NULLKEY)

Bucket[Index].KeyData  =  NewElemKey; break; 

if(____(2)___)  return  0; /*若基桶已满,则在益出桶查找空闲单元,若找到则申请新的益出桶*/ 
  
_________(3)___; t  =  Bucket[Index].Link; 
if(t!=  NULL) 

while(t  !=  NULL) 

for  (k=0;kif  (tà  KeyData[k]  == NULLKEY)  /*在益出桶链表中找到空闲单元*/ 

tà  KeyData[k]  =  NewElemKey;  break; 
}/*if*/ 
front  =  t; 
if  (___(4)___)  t  =  tàLink; 
else  break; 
}/*while*/ 

if(___(5)___)    /*申请新的益出桶并将元素存入*/ 

s=(BUCKET  *)malloc(sizeof(BUCKET)); 
if  (!s)  return  –1; 
sàLink  =  NULL; 
for(k  =  0;ksà  KeyData[k]  =  NULLKEY; 
sà  KeyData[0]  =    NewElemKey; 
______(6)____; 

return  0; 
}   
特别说明,以上是网友回顾的试题和答案,并非官方文件,仅供参考 

网友一答案 
下午两道: 
第四道C的 
1.index=NewDataKey%P 
2.i3.front=Bruster+index或者front=&Bruster[index] 
4,t->Link!=NULL 
5,t==NULL 
6.front->Link=s   
第五道: 
1.class OfficeDoc 
2.OfficeDoc 
3.virtual 
4.updata(this) 
5.attch(this)  
   
网友二答案 
第四道 
1.index=NewDataKey%P 
2.i3.front=Bruster+index或者front=&Bruster[index] 
4,t->Link!=NULL 
5,t==NULL 
6.front->Link=s   
第五道: 
1.class OfficeDoc 
2.OfficeDoc 
3.virtual 
4.updata(this) 
5.attch(this)  
网友三答案 
第四道: 
1.index=NewDataKey%P 
2.i3.front=&Bruster[index] 
4.k>=ITEMS 
5,t==NULL 
6.front->Link=s  
第五道: 
1.class OfficeDoc 
2.OfficeDoc 
3.virtual 
4.updata(this) 
5.attch(this)
【作者:本站编辑┊来源:培训资讯网┊2006-09-19】TAGS:
评论与咨询 内容报错
姓名: 电话: 邮箱: 地址:

  • ·本咨询平台是部分培训机构与本站指定的网上报名、咨询的专用平台,您可以通过此处提交您的信息,我们或该机构会根据您所提交的信息及时给予回复;
  • ·为了更好的问您服务,请填写您真实的姓名和相关联系方式,以便我们能及时给您答复;
  • ·不得提交有关违反国家互联网规定的不良信息,对于违规者我们有权追究你的法律责任!若有任何问题请 联系我们
关于我们 | 服务条款 | 广告服务 | 客服中心 | 网站导航 - 设为首页 - 收藏本站
Copyright © 2006-2008 www.0512edu.com.cn All Rights Reserved
苏州培训资讯网 版权所有
Powered By:AspArticle2.0 在远方