[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷13及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷13及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷13及答案与解析.doc(12页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 13及答案与解析 1 阅读以下说明和流程图,回答问题。 说明 从键盘输入一个高精度正整数 n,去掉其中 s个数字后按原左右次序再组成一个新的正整数。对给定的 n,要寻找一种方案,使得余下的数字组成的新数最小。 算法分析: 每次删除一个数字,选择一个使余下的数最小的数字作为删除对象。当 s=1时,在 n中删除哪一个数字能达到最小的目的 ?从左到右每相邻的两个数字比较:若出现减,郎左边大于右边,则删除左边的大数字;若不出现减,即所有数字全部升序,则删除最右边的大数字。当s l(当然小于 n的位数 ),按上述操作一个一个删除,删除一个达到最小后,再
2、从头即从串首开始,删除第 2个,依此分解为 s次完成。若删除不到 s个后已无左边大于右边的减序,则停止删除操作,打印余下串的左边 L-s个数字即可。 (x为统计删除数字的个数, m=1表示脱离循环, L为 n的长度 )。 流程图 问题 将流程图中的 (1) (5)处补充完整。 2 阅读下列程序说明和 C代码,将应填入 (n)处的字句写在对应栏内。 说明 函数 Printprime(int UpBound)的功能是输出 1到 UpBound以内的 全体素数。 函数 2.1 void PrintPrime(int UpBound) printf(“2,“ ); for(i=3; i UpBound
3、; i+ =2) int k = sqrt(i); for(j=3; j = k;(1) /*检查 i是否有 3到 k以入的奇因数 */ if(2) break; fi(3) printf(“%d“, i); 函数 2.2说明 递归函数 invert(int a,int k), int k)的功能是将数组 a中的前 k个元素逆置。 函数 2.2 void invert(int a , int k) int t; if (4) invert(5); t=a0; a0 =ak-1; ak-l=t; 3 阅读下列程序说明和 C程序,已知其输出为 “1 2 3 4 5 6 7 8 9 10”。将应填入
4、 (n)处的字句写在对应栏内。 说明 本程序包含的函数及其功能说明如 下: (1)函数 first_insert()的功能是在已知链表的首表元之前插入一个指定值的表元; (2)函数 reverse_copy()的功能是按已知链表复制出一个新链表,但新链表的表元链接顺序与 已知链表的表元链接顺序相反; (3)函数 Print_link()用来输出链表中各表元的值; (4)函数 free_link()用来释放链表全部表元空间。 程序 #include stdio. h #include malloe. h typodef struct node int val; struct node * nex
5、t; NODE; void first_insert(NODE * * p,int v) NODE *q = (NODE *) malloe(sizeof(NODE); q-val = v; q- next = *p; /* 为新表元赋值 */ * p =(1); NODE * reverse_copy( NODE * p) NODE * u; for(u=NULL; p!=NULL; p=p- next) first_insert(2); return u; void printlink(NODE * p ) for(;(3) prinff(“%dt“, p-val); printf(“ n
6、“); void free_link( NODE * p) NODE * u; while(p! =NULL) u=p-next;free(p);(4); void main( ) NODE * link1 , * link2; int i; link1 = NULL; for(i=1; i = 10; i+ + )first_insert( link2 = reverse_copy(link1 ); (5); free_link( linkl ) ;free_link(link2); 4 阅读下列程序说明和 C代码,回答问题 1 2。 说明 本程序用古典的 Eratosthenes的筛法求从
7、 2起到指定范围内的素数。如果要找出2至 10中的素 数,开始时筛中有 2到 10的数,然后取走筛中的最小的数 2,宜布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数 3、5、 7、 9:重复上述步骤,再取走最小数 3,宣布它为素数,井取走 3的倍数,于是留下 5、 7。反复重复上述步骤,直至筛中为空时,工作结束,求得 2至 10中的全部素数。 程序中用数组 sieve表示筛子,数组元素 sievei的值为 1时,表示数 i在筛子中,值为 -1时表示数 i已被取走。 程序 #include stdio, h #define MAX 22500 main( ) unsign
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 13 答案 解析 DOC
