[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷31及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷31及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷31及答案与解析.doc(12页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 31及答案与解析 1 阅读下列算法说明和代码,将应填入 (n)处的语句写在对应栏内。 【说明】 本程序用古典 Eratosthenes;筛选法求从 2起到指定范围内的素数。如果要找出2 10中的素数,开始时筛中有 2 10的数,然后取走筛中最小的数 2,宣布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数 3、 5、7、 9;重复上述步骤,再取走最小数 3,宣布它为素数,并取走 3的倍数,于是留下 5、 7。反复重复上述步骤,直到筛中为空时, 工作结束,求得 2 10中的全部素数。 【代码】 # include stdio
2、.h # define MAX 22500 /*程序中用数组 sieve表示筛子,数组元素 sievei的值为 1时,表示数 i在筛子中,值为 -1时表示数 i已被取走 */ main() unsigned int i, range, factor, k; int sieveMAX; printf(“please input the range:“); scanf(“%d“, /* range 指出在多大的范围内寻找素数 */ for(i=2; i =range; i+) (1); factor=2; while (factor =range) if(2) /* 筛中最小数是素数 */ pri
3、ntf(“%dt“, factor); k=factor; while (k =range) /*移走素数的倍数 */ (3); k=(4); (5); 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的语句写在对应栏内。 【函数 1.1说明】 本程序可以打印出如下图形 (菱形 ): * * * * * * * 【函数 2.1】 main() int i,j,k; for(i=0;i =3;i+) for(j=0;j =2-i;j+) printf(“ “); for(1) printf(“*“); printf(“n“); for(i=0;i =2;i+) for(2) printf(
4、“ “); for(k=0;k =4-2*i;k+) printf(“*“); printf(“n“); 【函数 2.2说明】 通过本程序,可以从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件 “CsaiWgm”中保存,输入的字符串以 “!”结束。 【函数 2.2】 #include “stdio.h“ main() FILE *fp; char str100,filename10; int i=0; if(fp=fopen(“CsaiWgm“,“w“)=NULL) printf(“cannot open the filen“); exit(0); printf(“p
5、lease input a string:n“); gets(str); while(3) if(stri =a fputc(stri,fp); (5); fclose(fp); fp=fopen(“CsaiWgm“,“r“); fgets(str,stden(str)+1,fp); printf(“%sn“,str); fclose(fp); 3 阅 读以下说明和 C语言函数,将应填入 (n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用 “()”括起来的各子树的列表 (若有子树的话 ),各子树的列表间用 “, ”分隔。例
6、如,如下图所示的三叉树可用列表 a(b(c,d),e,f(g,h,i)表示。 本程序根据输入的列表生成一棵 M叉树,并由 M叉树再输出列表。 【函数】 #include #include #define M 3 /*三叉树 */ typedef struct node int val; struct node *subTreeM; NODE; char buf255, *str=buf; NODE *d=NULL; NODE *makeTree() /*由列表生成 M叉树 */ int k; NODE *s; s=(1); s- val=*str+; for(k=0;k M;k+) s- su
7、bTreek=NULL; if(*str=() k=0; do str+; s- subTreek=(2); if(*str=) str+; break; k=k+1; while(3); return s; void walkTree(NODE *t) /*由 M叉树输出列表 */ int i; if(t !=NULL) (4); if(t- subTree0=NULL) return; putchar(); for(i=0;i M;i+) (5); if(i !=M-1 putchar(); void main() printf(“Enter exp: “); scanf(“%s“,str
8、); d=makeTree(); walkTree(d); putchar(n); 4 阅读以下说明和 C语言函数,将应填入 (n)处的语句写在对应栏内。 【说明】 本程序利用非递归算法实现二叉树后序遍历。 【函数】 #include stdio.h #include stdlib.h typedef struct node/*二叉树的结点数据结构类型 */ char data; struct node *left; struct node *right; BTREE; void SortTreelnsert(BTREE *tree, BTREE *s) if(*tree=NULL)*tree
9、=s; else if(s- data (*tree)- data) SortTreelnsert(1),s); else if(s- data =(*tree)- data) SortTreelnsert(2),s); void TraversalTree(BTREE *tree) BTREE *stack1 000,*p; int tag1000,top=0; p=tree; do while(p !=NULL) stack+top=p; (3); tagtop=0; /*标记栈顶结点的左子树已进行过后序遍历 */ while(top 0 putchar(p- data); if(top
10、0)/*对栈顶结点的右子树进行后序遍历 */ (5); tagtop=1; while(top 0); void PrintSortTree(BTREE *tree) if(tree !=NULL) printSortTree(tree- left); putchar(tree- data); pdntSortTree(tree- right); main() BTREE *root=NULL, *node; char ch; ch=getchar(); while(ch !=#) node=(BTREE*)malloc(sizeof(BTREE); node- data=ch; node-
11、left=node- right=NULL; SortTreelnsert( ch=getchar(); PrintSortTree(root); putchar(n); TraversalTree(root); 5 阅读以下说明,以及用 C+在开发过程中所编写的程序代码,将应填入 (n)处的字句写在对应栏内。 【说明 】 在下面函数横线处填上适当的字句,使其输出结果为: 构造函数 . 构造函数 . 1, 2 5, 6 析构函数 析构函数 . 【 C+代码】 #include “iostream.h“ class AA public; AA(int i,int j) A=i; B=j; cou
12、t “构造函数 .n“; AA()(1); void print(); private: int A, B; ; void AA print() cout A “,“ B endl; void main() AA *a1, *a2; (2)=new AA(1, 2); a2=new AA(5, 6); (3); a2- print(); (4) a1; (5) a2; 6 阅读以下说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 下面程序完成从键盘读入一个字符串,然后采用 parseInt方法将其转换为一个相应的整数。 import java.io.*; public c
13、lass testThrows public static (1) readString() (2) IOException int ch; String r=“; boolean done=false; while(3) ch=System.in.read(); if(ch 0 | ch=0xd) /处理回车符中第一个符号 done=true; else r=r+(char)ch; return r; public static void main(Stling args) String str; (4) str=readString(); (5) (IOException e) Syste
14、m.out.println(“error“); return; System.out.println(“input integer: “+Integer.parselnt(str); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 31答案与解析 1 【正确答案】 (1)sievei=i (2)sievefactor 0 (3)sievek=-1 (4)k+factor (5)factor+ 【试题解析】 本题考查在 C语言中实现素数的选取。 题目要求从指定范围内的数中选取其中的素数,并给出了相关的选取方法。在做题前我们首先需要清楚什么是素数,素数又叫质数,是指除 1和自身之外,没有其他约
15、数的正整数。 下面我们来分析程序。 第 (1)空在 第一层循环体下面,题目要求用数组 sieve表示筛子,但在程序中并没有给数组输入值,此空应该是在循环下往数组中存放数值,其存放的位置与数值的大小对应,因此,此空答案为 sievei=i。 第 (2)空是条件判断语句的条件,从注释中我们可以知道,这个条件判断语句的作用是筛中最小数是素数,是素数的话一定在数组中,元素的值就应该大于 0。那么条件应该是判断数组中当前位置的值是否大于 0,如果是,则执行判断语句下的语句,即筛选出这个数且这个数是素数。结合题目给出的条件,知道此空答案为sievefactor 0。 第 (3)空是移走素数的倍数这个循环下
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 31 答案 解析 DOC
