【计算机类职业资格】初级程序员下午试题-2及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-2及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-2及答案解析.doc(6页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-2 及答案解析(总分:120.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【说明】 下列流程图用于从数组 K中找出一切满足:K(I)+K(J)=M 的元素对(K(I),K(J)(1IJN)。假定数组 K中的 N个不同的整数已按从小到大的顺序排列,M 是给定的常数。 【流程图】 此流程图 1中,比较“K(I)+K(J):M”最少执行次数约为U (5) /U。 (分数:15.00)_二、B试题二/B(总题数:1,分数:15.00)2.【说明】 函数 print(BinTreeNode*t; DateType DateType int i, t
2、op; top = 0;/置空栈 while(t! = NULL STtop. ptr = t; STtop. tag = 0; U(2) /U; if(t!= Null U(3) /U;i +) printf(“%d“ ,STtop. ptr -data); else while(U (4) /U) top-; if(top0) STtop. tag = 1; U (5) /U; (分数:15.00)_三、B试题三/B(总题数:1,分数:15.00)3.【说明】 函数 DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int le
3、n)的功能是:将线性表 A中关键码为 key1的结点开始的 len个结点,按原顺序移至线性表 B中关键码为 key2的结点之前,若移动成功,则返回 0;否则返回-1。线性表的存储结构为带头结点的单链表,La 为表 A的头指针,Lb为表 B的头指针。单链表结点的类型定义为 typedef struct node int key; struct node * next; *LinkedList; 【函数】 int DelA_InsB ( LinkedList La, LinkdeList Lb,int key1,int key2,int len) LinkedList p,q,s,prep,pre
4、s; int k; if( ! La-next | ! Lb- next | en =0)return-1; p = La - next;prep = La; while(pp = p - next; if( ! p) return - 1; /*在表 A中不存在键值为 key1的结点*/ q=p;k=1; while(q k+; if( ! q)return -1; /*表 A中不存在要被删除的 len个结点*/ s = Lb - next; U(3) /U; while(s s =s-next; if( ! s) return - t; /*表 B中不存在键值为 key2的结点*/ U(4
5、) /U=q- next; /*将表 A中的 len个结点删除*/ q-next=U (5) /U; pres - next = p; /*将 len个结点移至表 B */ return 0; (分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)4.【说明】 将一正整数序列K1,K2,K9重新排列成一个新的序列,新序列中,比 K1小的数都在K1的前面(左面),比 K1大的数都在 K1的后面(右面),最后调用 writeDat()函数的新序列输出到文件out.dat中。 在程序中已给出了 10个序列,每个序列有 9个正整数,并存入数组 a109中,分别求出这 10个新序列。 例
6、:序列6,8,9,1,2,5,4,7,3 经重排后成为3,4,5,2,1,6,8,9,7 【函数】 #include stdio. h #include conio. h void jsValue( int a 10 9 ) int i,j,k,n,temp; int b9; for(i=0;i10;i+) temp=ai 0; k=8;n=0; for(j=8;j=0;j-) if(temp ai j)U (1) /U=aij; if(temp ai j)U (2) /U=aij; if(temp =ai j)U (3) /U= temp; for(j=0;j9;j+) aij =bj; v
7、oid main( ) int a10 9 = 6,8,9,1,2,5,4,7,3,3,5,8,9,1,2,6,4,7, 8,2,1,9,3,5,4,6,7, 3,5,1,2,9,8,6,7,4, 4,7,8,9,1,2,5,3,6, 4,7,3,5,1,2,6,8,9, 9,1,3,5,8,6,2,4,7, 2,6,1,9,8,3,5,7,4, 5,3,7,9,1,8,2,6,4, 7,1,3,2,5,8,9,4,6 ; int i,j; U (4) /U; for(i=0;i10;i+) for(j=0;j9;j+) printf(“%d“,ai j ); if(U (5) /U)prin
8、tf(“,“); printf(“ /n“ ); getch( ); (分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)5.【说明】本应用程序的运行窗口如图 2所示。(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)6.【说明】 设计一个类模板 SamPle用于对一个有序数组采用二分法查找元素下标。 【C+程序】 #include iostream. h #define Max 100 /最多元素个数 template class T class Sample T AMax: /存放有序数序 int n: /实际元素个数 public Sample( )
9、 /默认构造函数 Sample(T a ,int i); /初始化构造函数 int seek(T c); void disp( ) for(int i=0;i n;i +) coutAi “ “; coutendl: template class T Sample T: :Sample(T a ,int i) n=i: for( intj =0;j i;j + ) U (1) /U; template class T int Sample T : seek( T c) int low =0,high = n-1 ,mid; while(U (2) /U) mid = (low + high)/
10、2; if(U (3) /U) return mid; else if(U (4) /U) low=mid+|; else U (5) /U; return-1; void main( ) char a =“acegkmpwxz“; Sample char s(a, 1); cout“元素序列:“ ;s. disp( ); cout“元素g的下标:“s. seek(g) endl; (分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)7.【说明】 下面的程序的功能是利用实现 Runnable接口的方法来创建线程,并利用它来执行响应的一些操作。最后使得 m的执行结果:100,如
11、图 3。 (分数:15.00)_八、B试题八/B(总题数:1,分数:15.00)8.【说明】 该应用程序是用来修改文本框中的字体属性,其运行窗口如图 4所示。 (分数:15.00)_初级程序员下午试题-2 答案解析(总分:120.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【说明】 下列流程图用于从数组 K中找出一切满足:K(I)+K(J)=M 的元素对(K(I),K(J)(1IJN)。假定数组 K中的 N个不同的整数已按从小到大的顺序排列,M 是给定的常数。 【流程图】 此流程图 1中,比较“K(I)+K(J):M”最少执行次数约为U (5) /U。 (分
12、数:15.00)_正确答案:()解析:(1) (2) (3)I+1-I (4)J-1-J (5)N/2 解析 该算法的思路是:设置了两个变量 I和J,初始时分别指向数组 K的第一个元素和最后一个元素。如果这两个元素之和等于 M时,输出结果,并这两个指针都向中间移动;如果小于 M,则将指针 I向中间移动(因为数组 K已按从小到大的顺序排列);如果大于 M,则将指针 J向中间移动(因为数组 K已按从小到大的顺序排列)。当 IJ 时,说明所有的元素都搜索完毕,退出循环。 根据上面的分析,(1)、(2)空要求填写循环结束条件,显然,(1)空处应填写“”,(2)空处应填写“”。这里主要要注意 I=J的情
13、况,当 I=J时,说明指两个指针指向同一元素,应当退出循环。 (3)空在流程图有两处,一处是当 K(I)+K(J)=M时,另一处是当 K(I)+K(J)M 时,根据上面分析这两种情况都要将指针 I向中间移动,即“I+1-I”。同样的道理,(4)空处应填写“J-1-J”。 比较“K(I)+K(J):M”最少执行次数发生在第 1元素与第 N个元素之和等于 M、第 2元素与第 N-1个元素之和等于 M、,这样每次比较,两种指针都向中间移动,因此最小执行次数约为“N-2”。二、B试题二/B(总题数:1,分数:15.00)2.【说明】 函数 print(BinTreeNode*t; DateType D
14、ateType int i, top; top = 0;/置空栈 while(t! = NULL STtop. ptr = t; STtop. tag = 0; U(2) /U; if(t!= Null U(3) /U;i +) printf(“%d“ ,STtop. ptr -data); else while(U (4) /U) top-; if(top0) STtop. tag = 1; U (5) /U; (分数:15.00)_正确答案:()解析:(1)top+ (2)t=t-leftChild (3)i=top (4)top0 struct node * next; *LinkedL
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 答案 解析 DOC
