【计算机类职业资格】初级程序员下午试题-110及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-110及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-110及答案解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-110 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点 AP(Access Poin)。假设每个无线 AP 覆盖范围的半径是 6 米,因此必须使得每台笔记本计算机上的无线网卡到某个无线 AP 的直线距离不超过 6米。为了简化问题,假设所有无线网卡都在同一直线卜,并且无线 AP 沿该直线放置。该问题可以建模为如图 8-1 所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现采用贪心策略来实现用尽可能少的无线 AP 覆盖所有的无线网卡。基于贪心算法实现以上应用
2、需求的基本思想是:问题的规模为 N,从第 1 个无线网卡(最左端)开始布局无线 AP,把第 1 个无线 AP 放置在该无线网卡右方的 6 米处,此时该无线 AP 会覆盖从第 1 个无线网卡到该无线网卡右方直线长度为 12 米的所有无线网卡,假设覆盖了 N1 个无线网卡。此时间题规模变成了 N-N1,接着把第 1 个无线 AP 覆盖的无线网卡去掉,再从 N-N1 中选择第 1 个(最左端)无线网卡开始布局无线AP,将第 2 个无线 AP 放置在该无线网卡右方的 6 米处。依此布局,直到覆盖所有的无线网卡为止。图 8-2 是问题解的模型,其中,直线表示无线网卡所在的直线,实心正方形表示无线网卡,实
3、心圆形表示无线AP,虚线圆对应无线 AP 为圆心,虚线圆的直径为相应无线 AP 的覆盖范围(12 米)。实现以上贪心算法的流程如图 8-3 所示。其中,di(1iN)表示第 i 张无线网卡到通道 A 端的距离,N 表示无线网卡的总数,无线网卡的编号按照无线网卡到通道 A 端的距离从小到大进行编号;sk表示第 k(k1)个无线 AP 到通道 A 端的距离。算法结束后,k 的值为无线 AP 的总数。(分数:15.00)(1).请填补图 8-3 流程图中空缺处的内容。(分数:7.50)填空项 1:_(2).该贪心算法的时间复杂度为_。(分数:7.50)填空项 1:_二、试题二(总题数:2,分数:15
4、.00)1.说明 1下面C 程序代码 1的设计意图是:计算 1100 各数的平方。运行该段代码后,没有得到应有的运算结果。C 程序代码 1以上C 程序代码 1中共有 3 处错误。请在表 8-1 中指出这些错误所在代码的行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行,使之符合上述设计意图。(分数:9.00)填空项 1:_说明 2有两个进程(编号分别为 0 和 1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下C 程序代码 2给出了一种实现方法。C 程序代码 2int
5、flag2; /*flaq 数组, 初始化为 FALSE*/Enter_Critical_Section (int my_task_id, int other_task_id)while (flag other_task_id=TRUE); /*空循环语句*/flagmy_task_id=TRUE;Exit_Critical_Section (int my_task_id, int other_task_id)flagmy_task id=FALSE;当一个进程要访问临界资源时,就可以调用C 程序代码 2给出的这两个函数。C 程序代码 3给出了进程0 的一个例子。C 程序代码 3Enter_C
6、ritical_Section(0,1) ;使用这个资源Exit_Critical_Section (0,1) ;做其他的事情(分数:6.00)(1).C 程序代码 2所示的方法_实现共享资源的互斥访问。A能够 B不能(分数:2.00)填空项 1:_(2).C 程序代码 2采用了一种繁忙等待(busy waiting)的策略,这种策略的主要缺点是什么? 请用 100字以内的文字简要说明。(分数:2.00)填空项 1:_(3).如果将 Enterl_Critical_Section()函数中的两条语句互换一下位置,则可能会出现什么情况? 请用100 字以内的文字简要说明。(分数:2.00)填空项
7、 1:_三、试题三(总题数:1,分数:15.00)2.说明某超市集团为发展业务向社会公开招聘 N 个工种的工作人员,每个工种各有不同的编号(1M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该集团公司将按应聘者的成绩从高分至低分的顺序进行排队录取。具体录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去 5 分后,重新排队,并按其第二志愿考虑录取。以下 C 程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理后跳出。在 C 程序中,类型 STU 包含有
8、应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组 rz的每个元素对应一个工种,包含计划招聘人数和已录取的人数。C 程序代码#include#define N 36#define EDMARK 5typedef struct stu int no, total, z2, sortm, zi;struct stu *next;STU;struct rznode int lmt , count;STU *next;rz N ;STU *head = NULL, *over = NULL;int allFILE *fp;char dataf = “zp2008.dat“;print (S
9、TU *p)for (;p!=NULL; p = p-next)printf(“%d(%d)/t“, p-no, p-total) ;insert(STU *p, STU *u)STU *v, *q;for (q = *p;q != NULL; v = q , (1) )if ( q- sortm u-sortm)break;if ( q = *p)(2) ;else(3) ;u-next = q ;main ( )int zn, i, no, total, z1, z2 ;STU *p, *v, *q;fp = fopen (dataf, “r“) ;if (fp = NULL)printf
10、 (“Cant open file %s./n“,dataf);exit (0) ;fscanf (fp,“%d“,for (all = 0, i = i; i = zn; i+)fscanf (fp, “%d“, rz i .count = 0;rzi .next = NULL;all += (4) ;for (;)if (fscanf(fp,“%d%d%d%d“,p = ( STU *) malloc (sizeof (STU) ;p-no = no; p-total = p-sortm = total;p-zi = 0; p-z0 : z1;p-z1 = z2;(5) ;fclose (
11、fp);for (;all )p = head;head = head-next;if (rzp-zp-zi.count (6) )rzp-zp-zi.count +;insert( all-; continue;if (p-zi = 1 )p-next = over; over = p;continue;p-sortm -= DEMARK;(7) ;insert( for ( i = 1; i = zn; i+ )printf(“%d:/n“,i);print( rzi .next);printf(“/n“);printf(“over:/n“);print (head);print(over
12、);printf(“/n“)(分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)3.说明已知包含头结点(不存储元素)的单链表元素已经按照非递减方式排序,函数 compress(NODE*head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。在处理过程中,当元素重复出现时,保留元素第 1 次出现时所在的结点。图 8-4(a)、(b)是经函数 compress()处理前后的链表结构示例图。(分数:15.00)填空项 1:_五、试题五(总题数:1,分数:15.00)4.说明某绘图系统存在 Point、Line 和 Square 3 种图元,它们具有 Shape 接口
13、,图元的类图关系如图 8-5 所示。现要将 Circle 图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了 XCircle 类,且完全满足系统新增的 Circle 图元所需的功能,但 XCircle 不是由 Shape 派生而来的,它提供的接口不被系统直接使用。C+代码 1既使用了 Xcircle,又遵循了 Shape 规定的接口,既避免了从头开发一个新的Circle 类,又可以不修改绘图系统中已经定义的接口。C+代码 2根据用户指定的参数生成特定的图元实例,并对其进行显示操作。该绘图系统定义的接口与 XCircle 提供的显示接口及其功能如表 8-2 所示。(分数:15.00)填空
14、项 1:_六、试题六(总题数:1,分数:15.00)5.说明某绘图系统存在 Point、Line 和 Square 3 种图元,它们具有 Shape 接口,图元的类图关系如图 8-6 所示。现要将 Circle 图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了 XCircle 类,且完全满足系统新增的 Circle 图元所需的功能,但 XCircle 不是由 Shape 派生而来的,它提供的接口不被系统直接使用。Java 代码 1既使用了 XCircle 又遵循了 Shape 规定的接口,既避免了从头开发一个新的Circle 类,又可以不修改绘图系统中已经定义的接口。Java 代码
15、2根据用户指定的参数生成特定的图元实例,并对其进行显示操作。该绘图系统定义的接口与 XCircle 提供的显示接口及其功能如表 8-3 所示。(分数:15.00)填空项 1:_初级程序员下午试题-110 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点 AP(Access Poin)。假设每个无线 AP 覆盖范围的半径是 6 米,因此必须使得每台笔记本计算机上的无线网卡到某个无线 AP 的直线距离不超过 6米。为了简化问题,假设所有无线网卡都在同一直线卜,并且无线 AP 沿该直线放置。该问题
16、可以建模为如图 8-1 所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现采用贪心策略来实现用尽可能少的无线 AP 覆盖所有的无线网卡。基于贪心算法实现以上应用需求的基本思想是:问题的规模为 N,从第 1 个无线网卡(最左端)开始布局无线 AP,把第 1 个无线 AP 放置在该无线网卡右方的 6 米处,此时该无线 AP 会覆盖从第 1 个无线网卡到该无线网卡右方直线长度为 12 米的所有无线网卡,假设覆盖了 N1 个无线网卡。此时间题规模变成了 N-N1,接着把第 1 个无线 AP 覆盖的无线网卡去掉,再从 N-N1 中选择第 1 个(最左端)无线网卡开始布局无线AP,将第 2
17、个无线 AP 放置在该无线网卡右方的 6 米处。依此布局,直到覆盖所有的无线网卡为止。图 8-2 是问题解的模型,其中,直线表示无线网卡所在的直线,实心正方形表示无线网卡,实心圆形表示无线AP,虚线圆对应无线 AP 为圆心,虚线圆的直径为相应无线 AP 的覆盖范围(12 米)。实现以上贪心算法的流程如图 8-3 所示。其中,di(1iN)表示第 i 张无线网卡到通道 A 端的距离,N 表示无线网卡的总数,无线网卡的编号按照无线网卡到通道 A 端的距离从小到大进行编号;sk表示第 k(k1)个无线 AP 到通道 A 端的距离。算法结束后,k 的值为无线 AP 的总数。(分数:15.00)(1).
18、请填补图 8-3 流程图中空缺处的内容。(分数:7.50)填空项 1:_ (正确答案:k=0 (2) j=N 或其等价形式(3) k=k+1 或其等价形式 (4) di+6 或其等价形式)解析:本试题的题干说明中已将无线网卡分布问题建模(如图 8-1 所示)。其中,直线表示无线网卡所在的直线,实心正方形表示无线网卡。而要求解的问题是要求如何在该直线上布局无线 AP,使其能覆盖所有的无线网卡,并且所用无线 AP 的数量要尽可能少。这是一个通过进行一系列选择求最优解的问题。分析该问题,可以发现其具有最优子结构,并且具有贪心选择性质,故该问题可以用贪心算法来求解。实现贪心算法的流程见题干中的图 8-
19、3。由于“算法结束后 k 的值为无线 AP 的总数”,因此在算法开始处需要对变量尼赋初值,即(1)空缺处所填写的内容是“k=0”。该贪心算法中,N 表示无线网卡的总数,且无线网卡的编号按照无线网卡到通道 A 端的距离从小到大进行编号,di(1fN)表示第 i 个无线网卡到通道 A 端的距离。当判断第 i 个无线网卡未超过无线网卡总数 N,而求解下一个无线网卡(即第 i+1 个无线网卡,或第 j 个无线网卡)所归属的无线 AP 时,也需要判断第,个无线网卡是否超过无线网卡总数,以及第 j 个无线网卡与第 i 个无线网卡之间的距离是否超过12 米,因此(2)空缺处所在的判断条件是“j=N”,第 6
20、 行的语句修改为“i+;”或其等价表达形式。该 C 程序代码的另一个错误之处是,在 printf 语句中错误使用了取地址运算符号”。说明 2有两个进程(编号分别为 0 和 1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下C 程序代码 2给出了一种实现方法。C 程序代码 2int flag2; /*flaq 数组, 初始化为 FALSE*/Enter_Critical_Section (int my_task_id, int other_task_id)while (flag other_t
21、ask_id=TRUE); /*空循环语句*/flagmy_task_id=TRUE;Exit_Critical_Section (int my_task_id, int other_task_id)flagmy_task id=FALSE;当一个进程要访问临界资源时,就可以调用C 程序代码 2给出的这两个函数。C 程序代码 3给出了进程0 的一个例子。C 程序代码 3Enter_Critical_Section(0,1) ;使用这个资源Exit_Critical_Section (0,1) ;做其他的事情(分数:6.00)(1).C 程序代码 2所示的方法_实现共享资源的互斥访问。A能够 B
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 110 答案 解析 DOC
