考试总分:5分
考试类型:模拟试题
作答时间:60分钟
已答人数:967
试卷答案:有
试卷介绍: 2003年程序员下午试题
A(1)1-->L,N-->H
B(2)INT((L+H)/2)-->K
C(3)若E=ENG(K),则C-->CN(K),转向第二步若E__(1)__;若E>ENG(K),则K+1-->__(2)__
D(4)若HENG(I+1)CN(I)-->CN(I+1)然后,将E和C分别存入__(3)__和__(4)__,N+1-->N最后转向第二步否则,转向___
E(5)___第四步将数组ENG和CN输出,形成新的英汉词典文件,算法结束.[15分]
A(1)__;`/*p指向字符串s的结束标志*/while(--p>=s)if(__
B(2)__)returnp;returnNULL;}[函数2.2说明]函数BTREE*SortTreeSearch(BTREE*tree,intd)采用非递归方法,在二叉排序树(二叉查找树)中查找键值为d的结点。若找到,则返回键值所在结点的指针,否则返回NULL。二叉查找树的结点类型为:typedefstructnode{intdata;/*结点的键值*/structnode*left;structnode*right;}BTREE;[函数2.2]BTREE*SortTreeSearch(BTREE*tree,intd){BTREE*ptr=tree;while(ptr!=NULL&&d!=ptr->data){if(ddata)__
C(3)__;else__
D(4)__;}return__
E(5)___;}[15分]
A(1)___);if(v!=NULL){/*若链表中已有工号为n的结点v,则将其从链表中脱钩*/if(__
B(2)__base=v->next;elseu->next=v->next;v->num+=m;/*累加工号为n的职工完成的产品数量*/}else{/*创建一个工号为n的结点*/v=(ELEM*)malloc(sizeof(ELEM));v->no=n;v->num=m;}/*寻找结点v的插入位置*/p=base;while(p!=NULL)if(v->num>p->num||v->num==p->num&&___
C(3)___)break;else{u=p;p=p->next;}/*将结点v插入链表*/if(p==base)__
D(4)__;elseu->next=v;__
E(5)__;}returnbase;}[15分]
A(1)__){/*若k是n的倍数,则元素无须移动;否则,每个元素都要移动*/i=0;while(count<n){j=i;t=i;temp=a[i];/*备份a[i]的值*//*移动相关元素,直到计算出a[i]应移动到的目标位置*/while((j=__
B(2)__)!=i){a[t]=a[j];t=__
C(3)___;count++;}__
D(4)___=temp;count++;__
E(5)___;}}}[15分]
A(1)___;*top=p;return0;}[函数②]intpop(PNODE*top,int*e){PNODEp=*top;if(p==NULL)return–1;*e=p->value;___
B(2)____;free(p);return0;}[函数③]intenQueue(PNODE*tail,inte){PNODEp,t;t=*tail;p=(PNODE)malloc(sizeof(NODE));if(!p)return–l;p—>value=e;p—>next=t—>next;____
C(3)____;*tail=p;return0;}[函数④]intdeQueue(PNODE*tail,int*e){PNODEp,q;if((*tail)->next==*tail)return–1;p=(*tail)->next;q=p->next;*e=q->value;___
D(4)___=q->next;if(*tail=q)___
E(5)___;free(q);return0;}[15分]