【计算机类职业资格】初级程序员下午试题-104及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-104及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-104及答案解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-104 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于 n/2,则已经找到了中值,否则继续之前的步骤。注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_二、试题二(总题数:1,分数:15.00)函数 2.1说明编制一个字符替换函数 rep(ch
2、ar *s,char *s1,char *s2),实现将已知字符串 s中所有属于字符串 s1中的字符都用字符串 s2中的对应字符代替。函数 2,1#include stdio.h#define MAX 50rep(char *s,char *s1,char *s2)char *p;for(; *s; s+)for (p=s1; *p (1) ; p+); /*检查当前字符是否在字符串 s1中出现*/if(*p) (2) ; /*当前字符在字符串 s1中出现,用字符串 s2中的对应字符代替 s中的字符*/函数 2.2说明函数 Insert_Sort(int n)是一个直接插入排序的程序。其基本思
3、想是,假设待排序的记录存放在数组R1n中。初始时,R1自成一个有序区,无序区为 R2n。从 i=2起直至 i=n为止,依次将 Ri插入当前的有序区 R1i-1中,生成含 n个记录的有序区。函数 2.2#define MAX 255int RMAX; void Insert_Sort(int n)int i,j ;for(i=2; i=n; i+)if( (3) )R0=Ri; j=i-1; /*R0是哨兵,且是 Ri的副本*/do /*从右向左在有序区 R1i-1中查找 Ri的插入位置*/(4) ; /*将关键字大于 Ri的记录后移*/j-;while( (5) ); /*当 RiRj时终止*
4、/Rj+1=R0j /*Ri插入到正确的位置上*/(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:15.00)说明函数 Node*difference(A,B)用于求两个集合之差 C=A-B,即当且仅当 e是 A中的一个元素,但不是 B中的元素时,e 是 C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之值按递增排列。执行 C=A-B之后,表示集合 A和 B的链表不变,若结果集合 C非空,则表示其链表根据元素之值按递增排列。函数 append()用于在链表中添加结点。函数typedef
5、 struct nodeint element;struct node *link;Node; Node *A, *B, *C; Node *append(last,e)Node *last;int e; last-link= (Node *)malloc (sizeof (Node);last-link-element=e;return(last-link);Node *difference (A,B)Node *A, *B;Node *c, *last;C=last= (Node *)malloc(sizeof (Node);while( (1) )if(A-element B-eleme
6、nt)last=append (last,A-element);A=A-link;else if( (2) ) A=A-link;B=B-link;else(3) ;while( (4) ) last=append(last,A-element);A=A-link;(5) ; last=C;C=C-link;free(last); return (C); (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_四、试题四(总题数:1,分数:15.00)说明八皇后问题是指求解如何在国际象棋 8*8棋盘上无冲突地放置八枚皇后棋子。因为在国际象棋里,皇后的移动方式是
7、横竖交叉,所以在任意一个皇后所在位置的水平、竖赢和斜 45。线上都不能有其他皇后棋子的存在。一个完整无冲突的八皇后棋子分布称为八皇后问题的一个解。本程序实现了八枚皇后棋子在 8*8棋盘上无冲突的放置。函数#includemath. h#includestdio.h#define MAX 8 /*棋子数及棋盘大小 MAX*MAX*/int board MAX;/*印出结果*/void show_result()int i;for (i=0;iMAX;i+)printf(“(%d, %d)“,i,board i);printf(“/n“); /*检查是否在同一直横斜线上有其他棋子*/int che
8、ck_cross (int n)int i;for(i=0; in; i+)if( (1) )return 1; return 0;/*放棋子到棋盘上*/void put_chess (int n)int i;for (i=0; iMAX; i+)board n =i;if( (2) )if( (3) )show_result();/*找到其中一种放法了,印出结果*/else (4) ; void main()clrscr(); puts(“The possible placements are:“);(5) ;puts(“/n Press any key to quit“);getch();
9、 return:(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_五、试题五(总题数:1,分数:15.00)说明设计一程序,输入 16个整数到一个数组中,将数组位序颠倒重新排序,使每个数字不再按原 j的顺序排列,而是按 j的二进制数颠倒后得出的数排列,例如,将第 1个(0001)数与第 8个(1000)数交换,将第 3个数(0011)与第 12个数(1100)交换。C+程序#includeiostream.h#define SIZE 16#define SWAP (a,b) temper=(a); (a)= (b); (b) =temper;void m
10、aln()int dataSIZE; int n:cout“请输入“SIZE“个整数:“;for (n=0;nSIZE;n+)(1) ; int j=0,m;for (int i=0; in; i+)if(ji)(2) ; (3) ; while( (4) ) j=m)j-=m;m=1:(5) ; coutendl“排序后:“; for(n=0;nSIZE;n+)coutdata n; “ “; (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_六、试题六(总题数:1,分数:15.00)1.说明已知类 SubClass的 getSum方法返回其父类成员
11、i与类 SubClass成员 j的和,类 SuperClass中的getSum为抽象函数,程序中的第 14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第 22行且尚未执行第 22行语句时成员变量 i的值,最后给出程序运行后的输出结果。Java代码行号 代码01 public class Mainjava02 public static void main(String args) 03 SuperClass s = new SubClass () ;04 System. out .println (s. getValue () ;05 System. out
12、 .println (s.getSum () ;06 07 08 abstract class SuperClass09 private int i;10 public SuperClass () i= 5; 11 public int getValue () 12 return i;13 14 public final abstract int getSum();15 16 class SubClass extends SuperClass17 int j;18 public SubClass () 19 this (-3);20 21 public SubClass (int j) 22
13、(1) .j=j;23 24 public int getValue () return j; 25 public int getSum() 26 return (2) . getValue() + j;27 28 (分数:15.00)填空项 1:_初级程序员下午试题-104 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于 n/2,则已经找到了中值,否则继续之前的步骤。注:流程中
14、循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述。(分数:15.00)填空项 1:_ (正确答案:j=-1;)解析:填空项 1:_ (正确答案:xj=xi;)解析:填空项 1:_ (正确答案:count_lower+,)解析:填空项 1:_ (正确答案:count_lower(n/2.0)|count_higher(n/2.0);)解析:填空项 1:_ (正确答案:xj;)解析:解析 本题目考查流程图。算法描述在题目中已经详细给出,通过阅读题目可知 j用来定位数组中一个被比较的数,i 用来循环遍历数组中所有的数。j 应该从第 0个数开始,又由于要执行一步 j=j+1,所以空(1
15、)中应填入 j=-1,count_higher+说明,遍历的数比被比较的数大,即空(2)中应填入 xj=xi,相应的,空(3)中就应填入 count_lower+,题目说明中已经指出,当 count_lower和 count higher都大于 n/2时,就说明找到了中值,所以空(4)应当填入 count_lower(n/2.0)|count_higher(n/2.0),最后,如果循环结束,则 xj就应该是中值,空(5)中应填入 xj。二、试题二(总题数:1,分数:15.00)函数 2.1说明编制一个字符替换函数 rep(char *s,char *s1,char *s2),实现将已知字符串
16、s中所有属于字符串 s1中的字符都用字符串 s2中的对应字符代替。函数 2,1#include stdio.h#define MAX 50rep(char *s,char *s1,char *s2)char *p;for(; *s; s+)for (p=s1; *p (1) ; p+); /*检查当前字符是否在字符串 s1中出现*/if(*p) (2) ; /*当前字符在字符串 s1中出现,用字符串 s2中的对应字符代替 s中的字符*/函数 2.2说明函数 Insert_Sort(int n)是一个直接插入排序的程序。其基本思想是,假设待排序的记录存放在数组R1n中。初始时,R1自成一个有序区
17、,无序区为 R2n。从 i=2起直至 i=n为止,依次将 Ri插入当前的有序区 R1i-1中,生成含 n个记录的有序区。函数 2.2#define MAX 255int RMAX; void Insert_Sort(int n)int i,j ;for(i=2; i=n; i+)if( (3) )R0=Ri; j=i-1; /*R0是哨兵,且是 Ri的副本*/do /*从右向左在有序区 R1i-1中查找 Ri的插入位置*/(4) ; /*将关键字大于 Ri的记录后移*/j-;while( (5) ); /*当 RiRj时终止*/Rj+1=R0j /*Ri插入到正确的位置上*/(分数:15.00
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 104 答案 解析 DOC
