资源描述:
《计算机水平考试-初级程序员下午试题模拟56》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、初级程序员下午试题模拟56试题一阅读以下说明和流程图,填补流程图中的空缺⑴〜(5),将解答填入对应栏内。[说明]下面的流程图,用來完成求字符串七在s中最右边出现的位置。其思路是:做一个循环,以s的每一位作为字符吊的开头和t比较,如果两字符串的首字母是相同的,则继续比下去,如杲一直到t的最后一个字符也相同,贝U说明在S屮找到了一个字符串t;如果述没比较到t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在S中找到一个字符串t时,不应停止寻找(因为要求的是求t在s屮最右边出现的位置),应先记录这个位置pos,然后
2、开始新一轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果S为空或不包含t,则返回-注:返回值用pos表示。[问题]将流程图的1〜2处补充完整。试题二阅读以下函数说明和C语言函数,将应填入(11)处的字句写在对应栏内。。[函数说明]函数voidsort(intarry[]zintn)的功能是对数组a屮的arry[0]〜arry[n-1]这n个元索进行排序。排序过程如下:第一趟对所有的偶数下标x,比较arr[x]和arry[x+1],若arry[x]>arry[x+l],则将两者交换;第二趟对所有的奇
3、数下标y,比较arry[y]和arry[y+1],若arry[y]>arry[y+l],则将两者交换;第三趟对偶数下标,第四趟对奇数下标,・・・・・・,依次类推,宜至整个数组元素冇序排列为止。[函数2.1]voidsort(intarry[],intn){inti,j,tag=l;for(j=0;jarry[i+1]){t=arry[i];arry[il=arry[i+1];arry[i+1]=t;tag=0;}}tag++;if(8)break;}}—[函数2.2说明
4、]这是一棵二叉树排序查找元素的程序,查找的方法是:首先与树的根结点的元素进行比较,若相等则找到,返冋此结点的地址;若要查找的元素小于根结点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根结点的元素值,贝IJ指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元索。本题使用递归方法实现。[函数2.2]typedefstructnode{intdata;structnode*left;structnode*right;}NODE;NODE*SearchSortTree(NODE*tree,inte){if
5、(tree!=NULL){if(tree->datadata>e)10;elsereturntree;}returntree;试题三阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]已知一棵二叉树用二叉链表存储,匸指向根结点,p指向树屮任一结点。下列算法为输出从七到p之间路径上的结点。[函数]#defineMaxSize1000typedefstructnode{TelemTypedata;structnode*lchild,*rchild;}BiNode,*BiTree;void
6、Path(BiTreet,BiNode*p){BiTree*stackEMaxsize],*stackl[maxsize],*q;inttag[Maxsizel,top=0,topi;q=t•/*通过前序遍历发现p*/do{while(q!=NULL&&q!=p)八扫描左孩子,JI相应的结点不为p*/{_LL;stack[top]=q;tag[top]=0;12;}if(top>0){if(stack[top]==P)break;/*找到p,栈底到栈顶为t至Up*/if(tag[top]==1)top--;else{q=stack[top]
7、;q=q->rchild;tag[top]=1;}}}13;top--;topl=0;while(top>0){q=stack[top];/*反向打印准备*/topl++;14;top-_;}while(15){/★打印栈的内容*/q=stackl[topi];printf(q->data);topi--;试题四阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]设一个环上有编号为0〜nJ的n粒颜色不尽相同的珠子(每粒珠子颜色用字母表示,n粒珠子的颜色由输入的字符申表示)。从环上的某两粒珠了间剪开,则环上珠了形成一个序
8、列然后按以下规则从序列屮取走珠子:首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子屮取走所有连续的同色珠子,两者之和为该剪开处可取走珠子的粒数。在不同位置剪开,能