欢迎来到天天文库
浏览记录
ID:42846720
大小:136.00 KB
页数:5页
时间:2019-09-21
《计算机水平考试-程序员分类模拟题6》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、程序员分类模拟题6试题一【函数1.3说明】递归函数sum(inta[],intn)的返冋值是数组a[]的前n个元素Z和。【函数1・3】intsum(inta[],intn){ifJ_returna[n-1]+sum(a,n-1);else2;}试题二阅读以下说明和c程序,填充程序中的空缺。[说明]埃拉托斯特尼筛法求不超过自然数N的所冇素数的做法是:先把N个自然数按次序排列起来,1不是素数,也不是合数,要划去;2是素数,取出2(输岀),然后将2的倍数都划去;剩下的数中最小者为3,3是素数,取出3(输出),再把3的倍数都划去;剩下的数屮最小者为5,5是素
2、数(输出),再把5的倍数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,每次从序列中取岀的最小数构成的序列就是不超过N的全部质数。下而的程序实现埃拉托斯特尼筛法求素数,其屮,数组元素sieve[i](u>0)的下标i对应自然数i,sieve[i]的值为1/0分别表示i在/不在序列中,也就是将i划去(去掉)时,就将sieve[i]设置为0。[C程序]#includeh>#defineN10000intmain3{charsieve[N+l]=4;inti=0,k;/*初始时2〜N都放入sieve数组*/for(i=2;;i++)s
3、ieve[i]=1;for(k—2••){"找出剩卡的数中最小者并用K表示*/for(;k4、分别动态地保存在变量A和B中。[流程图]试题四阅读以下说明和c函数,填充函数屮的空缺。[说明]函数Insert_key(*root,key)的功能是将键值key插入到*root指向根结点的二叉查找树屮(二叉查找树为空吋*root为空指针)。若给定的二叉查找树屮已经包含键值为key的结点,则不进行插入操作并返回0;否则申请新结点、存入key的值并将新结点加入树中,返回提示:二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具冇如下性质的二叉树:若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;若它的右子树非空,则其右子树上所有结点的键值5、均大于根结点的键值;左、右子树本身就是二叉查找树。设二叉查找树采用二叉链表存储结构,链表结点类型定义如F:typedefstructBiTrrode{intkey_value;/*结点的键值,为非负整数*/structBiTnode*leftz*right;/*结点的左、右子树指针*/}BiTnode,*BSTree;[C函数]intInsertkey(BsTree*root,intkey){■BiTnode*father=NULLz*p=*root,*s;while(&&key!=p->key_value){/★查找键值为Key的结点*/fathe6、r=p;if(keykey_value)p=;/*进入左子树★/elsep=;/*进入右子树*/}if(p)return0;/*二叉查找树中已存在键值为key的结点,无须再插入*/s=(BiTraode*)malloc();/*根据结点类型生成新结点*/if(!s)return-1;s->key_value=key;s->left=NULL;s->right=NULL;if(!father);八新结点作为二叉查找树的根结点”else"新结点插入二叉查找树的适当位置★/if(keykey_value)father->left=7、s;elsefather->right=s;return1:}答案:试题一1、n>0[解析]递归函数sum()完成数组n个元素的累加,n>0时,使用规模为的函数进行递归。2、return0[解析]当n<=0时,返冋0即可试题二3、iN或k>=N+l或其等价形式6、i+k或其等价形式7、sieve[i]=0或其等价形式木题要求是完成程序,该程序的功能是找到不超过自然数N的所有素数。首先在初始吋2〜N都放入sieve数组中,所以i的取值范围为2〜N,包含N,所以第一空应该填i的最大取值为N,所以第8、一空填iVN+l或者i<=N,并赋值sieve[i]=l,表示所有的数,无论是否为素数都放入数组中,接卜来找
4、分别动态地保存在变量A和B中。[流程图]试题四阅读以下说明和c函数,填充函数屮的空缺。[说明]函数Insert_key(*root,key)的功能是将键值key插入到*root指向根结点的二叉查找树屮(二叉查找树为空吋*root为空指针)。若给定的二叉查找树屮已经包含键值为key的结点,则不进行插入操作并返回0;否则申请新结点、存入key的值并将新结点加入树中,返回提示:二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具冇如下性质的二叉树:若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;若它的右子树非空,则其右子树上所有结点的键值
5、均大于根结点的键值;左、右子树本身就是二叉查找树。设二叉查找树采用二叉链表存储结构,链表结点类型定义如F:typedefstructBiTrrode{intkey_value;/*结点的键值,为非负整数*/structBiTnode*leftz*right;/*结点的左、右子树指针*/}BiTnode,*BSTree;[C函数]intInsertkey(BsTree*root,intkey){■BiTnode*father=NULLz*p=*root,*s;while(&&key!=p->key_value){/★查找键值为Key的结点*/fathe
6、r=p;if(keykey_value)p=;/*进入左子树★/elsep=;/*进入右子树*/}if(p)return0;/*二叉查找树中已存在键值为key的结点,无须再插入*/s=(BiTraode*)malloc();/*根据结点类型生成新结点*/if(!s)return-1;s->key_value=key;s->left=NULL;s->right=NULL;if(!father);八新结点作为二叉查找树的根结点”else"新结点插入二叉查找树的适当位置★/if(keykey_value)father->left=
7、s;elsefather->right=s;return1:}答案:试题一1、n>0[解析]递归函数sum()完成数组n个元素的累加,n>0时,使用规模为的函数进行递归。2、return0[解析]当n<=0时,返冋0即可试题二3、iN或k>=N+l或其等价形式6、i+k或其等价形式7、sieve[i]=0或其等价形式木题要求是完成程序,该程序的功能是找到不超过自然数N的所有素数。首先在初始吋2〜N都放入sieve数组中,所以i的取值范围为2〜N,包含N,所以第一空应该填i的最大取值为N,所以第
8、一空填iVN+l或者i<=N,并赋值sieve[i]=l,表示所有的数,无论是否为素数都放入数组中,接卜来找
此文档下载收益归作者所有