【计算机类职业资格】初级程序员下午试题-92及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-92及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-92及答案解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-92 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.说明下面的流程图实现了正整数序列 K(1),K(2),K(n)的重排,得到的新序列中,比 K(1)小的数都在 K(1)的左侧,比 K(1)大的数都在 K(1)的右侧。以 n=6为例,序列 12,2,9,13,21,8 的重排过程为:12,2,9,13,21,82,12,9,13,21,89,2,12,13,21,88,9,2,12,13,21流程图(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.函数 2.1说明下面程序的功能是:将由键盘输入的某个十进
2、制数转换成对应的 R进制数并输出。这里 R是 2 到 16的整数,由键盘输入。例如,输入 n=128,base=13 后的输出为 9B。函数 2.1#include stdio.hmain()char b16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;int c64,n,i=0,base;printf(“Enter a number:“);scaaf(“%d“,printf(“Enter new base:“);scanf(“%d“,doci= (1) ;i+;n=n/base;while( (2) );printf(“Transmit new base:“);for(-
3、 -i;i=0;- -i)printf(“%c“, (3) );函数 2.2说明所谓回文字符中是指正序和逆序拼写相同的字符串,例如 astrtsa,adgdtdgda 等。下面函数 int fun(char *str)的功能是判断字符串 str是否是回文,当字符串是回文时,函数返回 1,否则返回 0。函数 2.2int fun(char *str)int i,j,l;for(i=0;stri! =/0;i+);l=i/2;for(j=0,i- -;j=1; (4) )if( (5) ) return 0;return 1;(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.说明
4、邻接表是图的一种顺序存储与链式存储结合的存储方法。其思想是:对于图 G中的每个顶点 vi,将所有邻接于 vi的顶点 vj连成一个单链表,这个单链表就称为顶点 vi的邻接表,其中表头称作顶点表结点VertexNode,其余结点称作边表结点 EdgeNode。将所有的顶点表结点放到数组中,就构成了图的邻接表AdjList。邻接表表示的形式描述如下: #define MaxVerNum 100 /*最大顶点数为 100*/typedef struct node /*边表结点*/int adjvex; /*邻接点域*/struct node *next; /*指向下一个边表结点的指针域*/ EdgeN
5、ode;typedef struct vnode /*顶点表结点*/int vertex; /*顶点域*/EdgeNode *firstedge; /*边表头指针*/VertexNode;typedef VertexNode AdjListMaxVerNum; /*AdjList是邻接表类型*/typedef structAdjList adjlist; /*邻接表*/int n; /*顶点数*/ALGraph; /*ALGraph是以邻接表方式存储的图类型*/深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。下面的函数利用递归算法,对以邻接表形式存储的图进行深度优先搜索:设初始状态是
6、图中所有顶点未曾被访问,算法从某顶点 v出发,访问此顶点,然后依次从 v的邻接点出发进行搜索,直至所有与 v相连的顶点都被访问;若图中尚有顶点未被访问,则选取这样的一个点作起始点,重复上述过程,直至对图的搜索完成。程序中的整型数组 visited的作用是标记顶点 i是否已被访问。函数void DFSTraverseAL(ALGraph *G)/*深度优先搜索以邻接表存储的图 G*/int i;for(i=0;i (1) ;i+) visitedi=0;for(i=0;i (1) ;i+)if( (2) ) DFSAL(G,i);void DFSAL(ALGraph *G,int i) /*从
7、Vi出发对邻接表存储的图 G进行搜索*/EdgeNode *p;(3) ;p= (4) ;while(p!=NULL) /*依次搜索 Vi的邻接点 Vj*/if(! visited (5) ) DFSAL(G, (5) );p=p-next; /*找 Vi的下一个邻接点*/(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.说明Kruskal算法是一种构造图的最小生成树的方法。设 G为一无向连通图,令 T是由 G的顶点构成的于图,Kmskal算法的基本思想是为 T添加适当的边使之成为最小生成树:初始时,T 中的点互相不连通;考察 G的边集 E中的每条边,若它的两个顶点在 T中不
8、连通,则将此边添加到 T中,同时合并其两顶点所在的连通分量,如此下去,当添加了 n-1条边时,T 的连通分量个数为 1,T 便是 G的一棵最小生成树。下面的函数 void Kruskal(EdgeType edges,int n)利用 Kruskal算法,构造了有 n个顶点的图 edges的最小生成树。其中数组 father用于记录 T中顶点的连通性质:其初值为 fatheri=-1 (i=0,1,n-1),表示各个顶点在不同的连通分量上;若有 fatheri=j,j-1,则顶点 i,j 连通;函数 int Find(int father,int v)用于返回顶点 v所在树形连通分支的根结点。
9、函数#define MAXEDGE 1000typedef structint v1;int v2;EdgeType;void Kruskal(EdgeType edges,int n)int fatherMAXEDGE;int i,j,vf1,vt2;for(i=0;in;i+ +) fatheri=-1;i=0;j=0;while(iMAXEDGE vf2=Find(father,edgesi.v2);if( (2) )(3) =vf1;(4) ;printf(“%3d%3d/n“,edgesi.v1,edgesi.v2);(5) ;int Find(int father,int v)in
10、t t;t=v;while(fathert=0) t=fathert;return(t);(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.说明下面的程序演示了根据随机产生的奖牌数,生成金银奖牌榜的过程。程序使用的排序法是简单排序法。以金牌得数为例,其思想是选择最大的元素,将它交换到最前面;然后对剩下的部分采用同样的方法,直到全部排序完成。(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.说明有若干教师,每个教师只有姓名,一个教师可以指导多名研究生;每名研究生有姓名和研究方向,程序最后输出每个教师指导的所有研究生的姓名和研究方向。Java程序public c
11、lass Teacher String name;int top=0;Student student=new Student20;public Teacher() public Teacher(String name) this.name=name;boolean add(Student stu)int len=this.student.length;if (toplen-1) this.studenttop=siu;(1) ;return true;elsereturn (2) ;void disp()System.out.println(“指导老师“”+this.name);System.
12、out.println(“研究生:”);for(int i=0;i (3) ;i+)System.out.println(“姓名:”+this.studenti.name+“/t 研究方向:”+this.studenti. search);public static void main(String args)Teacher t=new Teacher(“李明”),new Teacher(“王华”);Student s1 = new Student(“孙强”,“数据库”);Student s2 = new Student(“陈文”,“软件工程”);Student s3 = new Studen
13、t(“章锐”,“计算机网络”);if(! t0.add(s1) System.out.println(“每个老师最多只能指导 20个学生!”);if(! t0.add(a2) System.out.println(“每个老师最多只能指导 20个学生!”);if(! t1.add(s3) System.out.println(“每个老师最多只能指导 20个学生!”);for(int i=0;i2;i+)(4) ;class (5) String name;String search;public Student()public Student(String name,String search)
14、this.name=name;this.search=search;String getName()return this.name;String getSearch()return this.search;(分数:15.00)_七、试题七(总题数:1,分数:15.00)7.说明设有一张学生成绩表 scores存放在 Access数据库 Student中,其中包括学生编号、姓名以及各科目考试成绩。下面的应用程序利用 ADO Data和 DataGrid控件实现了对成绩数据的基本管理,其操作包括:(1)添加新记录:单击“添加”按钮,光标将指向最后一条数据记录,在其后编辑好新的数据记录后,再单击“
15、更新”按钮,该数据即被加入成绩表;(2)删除记录:单击“删除”按钮将删除当前所指记录,其后的数据记录依次上移;(3)更新记录:直接编辑某条已有记录,再单击“更新”按钮将更新成绩表;(4)记录排序:选中单列字段后,单击“排序”按钮,记录集将按该字段升序排列。程序的运行界面为:(分数:15.00)_八、试题八(总题数:1,分数:15.00)8.说明下面的词典类 Dic实现了简单的英译汉功能。程序运行后的输出为“我是一个学生”。C+程序#include iostream.h#include string.h#define Max 100class Dicint top;char wordsMax 1
16、2;char meanMax 20;public:Die()top=0;void add(char w,char m)strcpy(wordstop,w);strcpy(meantop,m);(1) ;void trans(char str) int i=0,j=0,k=0,s;char w12,h200;while(l) if(stri! = /读取单词的一个字符,记录在 w中else wj=/0;for(s=0;s top;s+)if(strcmp(wordss,w) (2) 0) break;if(stop) /找到了,翻译成对应的 meansstrcpy(w,means); j= (3
17、) ;else /未找到,翻译成(unknown)strcpy(w,“(unknown)“; j=9; for(s=0;sj;s+)hk+=ws;if(stri=/0) (4) ; break;j=0;i+;couthendl;void main()Dic obj;obj.add(“I“,“我“);obj.add(“am“,“是“);obj.add(“student“,“学生“);obj.add(“a“,“一个“);obj.trans(“ (5) “);(分数:15.00)_初级程序员下午试题-92 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)
18、1.说明下面的流程图实现了正整数序列 K(1),K(2),K(n)的重排,得到的新序列中,比 K(1)小的数都在 K(1)的左侧,比 K(1)大的数都在 K(1)的右侧。以 n=6为例,序列 12,2,9,13,21,8 的重排过程为:12,2,9,13,21,82,12,9,13,21,89,2,12,13,21,88,9,2,12,13,21流程图(分数:15.00)_正确答案:(1) K(s)K(t) (2) K(s) (3) ii-1 (4) tt+1 (5) ss+1)解析:考点分析 考查算法的流程图表示。解析 算法中变量 K(t)始终代表原始序列中的 K(1)值,t 则代表它在当前
19、序列中的位置编号,初始值为1; k(s)代表待比较的数。算法首先拿 K(t)和其后的数做比较,若 K(s)比 K(t)小,则 K(s)移至序列的最左侧,同时顺次把第 i,is 位的元素向右移一位。让 s自增 1,重复这一步骤,直至到达序列末端(即s=n)为止。二、试题二(总题数:1,分数:15.00)2.函数 2.1说明下面程序的功能是:将由键盘输入的某个十进制数转换成对应的 R进制数并输出。这里 R是 2 到 16的整数,由键盘输入。例如,输入 n=128,base=13 后的输出为 9B。函数 2.1#include stdio.hmain()char b16=0,1,2,3,4,5,6,
20、7,8,9,A,B,C,D,E,F;int c64,n,i=0,base;printf(“Enter a number:“);scaaf(“%d“,printf(“Enter new base:“);scanf(“%d“,doci= (1) ;i+;n=n/base;while( (2) );printf(“Transmit new base:“);for(- -i;i=0;- -i)printf(“%c“, (3) );函数 2.2说明所谓回文字符中是指正序和逆序拼写相同的字符串,例如 astrtsa,adgdtdgda 等。下面函数 int fun(char *str)的功能是判断字符串
21、str是否是回文,当字符串是回文时,函数返回 1,否则返回 0。函数 2.2int fun(char *str)int i,j,l;for(i=0;stri! =/0;i+);l=i/2;for(j=0,i- -;j=1; (4) )if( (5) ) return 0;return 1;(分数:15.00)_正确答案:(1) n% base (2) n! =0 (3) bci (4) j+, i- (5) stri! =strj)解析:考点分析 考查 C语言程序设计,包括数值和字符中的处理。解析 (1)(3)函数 2.1的基本思想是“除 base取余”,即从低位开始以 n除以 base的余数
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 92 答案 解析 DOC
