【计算机类职业资格】初级程序员下午试题-89及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-89及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-89及答案解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-89 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【流程图说明】下面的流程(如图 1 所示)用 N-S 盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有 3 个成员:data, left 和 right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。【算法说明】【流程图】将上题的排序二叉树中查找
2、元素的过程用递归的方法实现。其中 NODE 是自定义类型:(分数:15.00)填空项 1:_二、试题二(总题数:1,分数:15.00)2.【说明 2.1】L 为一个带头结点的循环链表。函数 deletenode(LinkList L, int c)的功能是删除 L 中数据域 data 的值大于 c 的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。【函数 2.1】LinkList deletenode(LinkList L, int c)LinkList Lc,p,pre;pre=L;p= (1) ;Lc=(LinkList)malloc(sizeof(Lis
3、tNode) );Lc-next=Lcwhile(p!=L)if(p-datac)(2) ;(3) ;Lc-next=p;p=pre-next;elsepre=p;p=pre-next;return Lc;【说明 2.2】递归函数 dec_to_k_2(int n, int k)的功能是将十进制正整数 n 转换成 k2k9)进制数,并打印。【函数 2.2】dec_to_k_2(int n, int k)/*将十进制正整数 n 转换成 k(2k9)进制数*/if(n!=0)dec_to_k_2( (4) ,k);printf(“%d“, (5) );(分数:15.00)填空项 1:_三、试题三(
4、总题数:1,分数:15.00)3.1】假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数 deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。例如:链表初始元素为:(7, 10,10,21,30,42,42,42,51,70)经算法操作后变为:(7,10,21,30,42,51,70)【函数 3.1】void deleteklist(LinkList head)LinkNode * p, * q;p=head-next;while(p!=head)q=p-next;while( (1) )(2) ;free(q);q=p-nex
5、t;p=p-next;【说明 3.2】已知一棵完全二叉树存放于一个一维数组 Tn中,Tn中存放的是各结点的值。下面的程序的功能是:从 T0开始顺序读出各结点的值,建立该二叉树的二叉链表表示。【函数 3.2】#includeistream.h typedef struct node int data;stuct node leftChild, rightchild;BintreeNode;typedef BintreeNode * BinaryTree;void ConstrncTree(int T, int n, int i, BintreeNode * /*置根指针为空*/elseptr=-
6、(BTNode * )malloc(sizeof(BTNode) )ptr-data=Ti;ConstrucTree(T,n,2, i+1, (4) );ConstrucTree(T,n, (5) ,ptr-rightchild);main(void)/*根据顺序存储结构建立二叉链表*/Binarytree bitree;int n;printf(“please enter the number of node: /n%s“ ;n);int* A = (int *) malloc(n * sizeof(int);for(int i=0;in;i+)scanf(“ %d,A+i); /*从键盘输
7、入结点值*/for(int i=0;in;i+)printf(“ %d“,Ai);ConstructTree(A, n,0, bitree);(分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)4.【说明】该程序的功能是从文件 IN.DAT 中读取一篇英文文章存入到字符串数组 xx 中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx 中,最后把结果 xx 输出到文件 OUT6.DAT 中。例如:原文:You He MeI am a student结果:Me He Youstudent a a
8、m I原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。【函数】#includestring.h #includeconio.h #includectype.h#includestdio.h char xx50 80;int maxline=0; /*文章的总行数*/int ReaaDat(void);void WriteDat(void);void StrOL(void)char * p1, * p2,t80;int i;for(i=0;imaxline;i+)p1=xxi;t0=0;while(*p1)p1+;while(p1=xxi)while(!isalpha
9、(*p1) p2=p1;while( (1) )p1-;if(p1=xxi)if(isalpha(*p1)p1-;else if(!isalpha(*(p1+1)break;p2+;(2) ;strcat(t, p1+1);strcat(t,“ “);strcpy(xxi,t);void main( )if( (3) ) printf(“数据文件 in.dat 不能打开!/n/007“ );return;StroL();writeDat();getch();int ReadDat(void)FILE * fp;int i =0;char * p;if(fp=fopen(“e:/a/in.dat
10、“,“ r“ )=NULL)return 1;while(fgets(xxi,80,fp)!=NULL) p=strchr(xxi,/n)if(p)*p=0;i+;maxline= (4) fclose(fp);return 0;void WriteDat(void)FILE * fp;int i;fp=fopen(“e:/a/out6,dat“,“w“);for(i=0;i (5) ;i+)printf(“%s/n“,xxi);fprintf(fp,“%s/n“,xxi)fclose(fp)(分数:15.00)填空项 1:_五、试题五(总题数:1,分数:15.00)5.【说明】该应用程序是用
11、来求一元二次方程和一元一次方程的,其运行如图 2 所示。(分数:15.00)填空项 1:_六、试题六(总题数:1,分数:15.00)6.【说明】下面是一个 Applet 程序,程序的功能是在显示面板上输出字符串。当 html 页面被其他窗口遮挡后再次显示时,请给出输出结果。import java.awt.*;import java. (1) . *;public class MyApplet (2) Applet public void (3) (Graphics g) g.drawString(tip,20,40);tip =“I am Java Applet“;public void in
12、it() tip =“welcome“; private (4) tip;htmlheadtitle A Simple Applet /title/headbodyapplet code=“MyApplet.class“ width=800 height=400/applet/body/html网页输出 (5) (分数:15.00)填空项 1:_七、试题七(总题数:1,分数:15.00)7.【说明】以下程序的功能是计算正方体、球体和圆柱体的表面积和体积并输出。程序由 4 个类组成:类 cube、sphere 和 cylinder 分别表示正方体、球体和圆柱体;抽象类 container为抽象类
13、,提供了两个纯虚拟函数 surface_area()和 volum(),作为通用接口。【C+程序】#includeiostream.h #define pi 3.1416class container protected: double radius; public:container(double radius) container:radius=radius;virtual double surface_area()=0;virtual double velum()=0;class cube: (1) /定义正方体类public:cube(double radius):container(
14、radius);double surface_area () return 6 * radius * radius;double volum() return radius * radius * radius;class sphere: (2) /定义球体类public:sphere(double radius): container(radius);double surface_area() return (3) ;double volum() return pi * radius * radius * radius * 4/3;class cylinder: (4) /定义圆柱体类doub
15、le height;public:cylinder(double radius,double height):container(radius)container:height=height;double surface_are a () return 2 * pi * radius * (height+radius); double volum () return (5) ;void main()container * p;cube obj1 (5);sphere obj2(5);cylinder obj3(5,5);p=cout“正方体表面积”(p-surface_area()end1;c
16、ont“正方体体积”p-volume()end1;p=cout“球体表面积”p-surface_area()end1;cout“球体体积”p-volume()end1;p=cout“球体表面积”p-surface_area()end1;cout“球体体积”p-volume()end1;(分数:15.00)填空项 1:_八、试题八(总题数:1,分数:15.00)8.【说明 8.1】以下程序的功能是:生成 20 个 200300 之间的随机整数,输出其中能被 5 整除的数并求出它们的和。【程序代码 8.1】Private Sub Command1_Click()For i=1 To 20x=Int
17、( (1) *200+100)If (2) =0 ThenPrint xS=S+ (3) End IfNext iPrint“Sum=“;SEnd Sub【说明 8.2】程序 8.2 运行后,单击窗体,则在窗体上显示的内容是:a= (4) 和 b= (5) 。【程序代码 8.2】Private Sub Form_Click()Dim a As Integer,b As Integera=20:b=50p1 a,bp2 a,bp3 a,bPrint“a=“;a,“b=“;bEnd SubSub p1(x As Integer, ByValy As Integer)x=x+l0y=y+20End
18、SubSub p2(ByValAs Integer, y As Integer)x=x+l0y=y+20End SubSub p3(ByValAs Integer, ByVal y As Integer)x=x+10y=y+20End Sub(分数:15.00)填空项 1:_初级程序员下午试题-89 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【流程图说明】下面的流程(如图 1 所示)用 N-S 盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有 3 个成员:data, left 和 right。其查找的方法是:首先与树的根节点的元素值
19、进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。【算法说明】【流程图】将上题的排序二叉树中查找元素的过程用递归的方法实现。其中 NODE 是自定义类型:(分数:15.00)填空项 1:_ (正确答案:p=p-left (2)ptr=p-right (3)return P (4) return SearchSortTree(tree-left ) (5)return SearchSortTree(tree-right)
20、)解析:解析 所谓二叉排序树,指的是一棵为空的二叉树,或者是一棵具有如下特性的非空二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值。若它的右子树非空,则右子树上所有结点的值均大干根结点的值。左、右子树本身又各是一棵二叉排序树。先来分析流程图。在流程图中只使用一个变量 p,并作为循环变量来控制循环,所以循环体中必须修改这个值。当进入循环时,首先判断 p 是不是为空和该结点是不是要找的结点,如果这两个条件有一个满足就退出循环,返回 prt,(如果是空,则返回 NULL,说明查询失败;否则返回键值所在结点的指针。)因此(3)空处应当填写“return p”。如果两个条件都不满足,就用
21、查找键值 e 与当前结点的关键字进行比较,小的话,将指针 p 指向左子树继续查找,大的话将指针 P 指向右子树继续查找。于是,(1)空处应当填写“p=p-left”,(2)空处应当填写“p=p-right”。再来分析程序。虽然是递归算法,但实现思路和非递归是一样。首先用查找键值 e 与树根结点的关键字比较,如果值小的话,就在左子树中查找(即返回在左子树中查找结果);如果值大的话在右子树中查找(即返回在右子树中查找结果);如果相等的活就返回树根指针。因此(4)、(5)空分别应填写“return SearehSortTree(tree-left)”和“return SearehSoaTree(tr
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 89 答案 解析 DOC
