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