【计算机类职业资格】初级程序员下午试题-52及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-52及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-52及答案解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-52 及答案解析(总分:105.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读以下应用程序说明和 C 程序,将 C 程序段中(1)(6)空缺处的语句填写完整。【说明】某大学征询学生意见,从各学院预选的 n(n60)位优秀大学生中,评选出“十佳大学生”。以下【C 程序】对各位学生选票进行相关的统计、排序等处理。(1)各学院预选的优秀大学生按 1,2,顺序连续编号,每个编号用两个字符表示,即 01,02,。(2)所回收的选票按以下格式存于文件 source 中,每行字符串对应一张选票。其中,姓名占 10 个字符,学院名称占 30 个字符,大学生
2、编号占 20 个字符。(3)对应名次的大学生编号可以有空缺,但必须用 00 表示。(4)若编号超出规定范围,或编号重复出现,按照废票处理。(5)按选票中所列“十佳大学生”顺序给出各名大学生的得分。评分标准如下:一 二 三 四 五 六 七 八 九 十15 12 9 7 6 5 4 3 2 1(6)按各位大学生得分数由高到低顺序排队,并按以下格式列出“十佳大学生”排行表。名次 大学生编号 合计得分 合计得票数若得分相同,则得票数多的在前;若得分和得票数都相同,则编号小的在前。以下【C 程序】中所应用到的函数 fopen、fclose 和 fgets 都是 I/O 程序库中的函数。【C 程序】#in
3、clude stdio. h#define n 60long int tnn, tdn, scoren+110, ordern;char s80;int mark=(15,12,9,7,6,5,4,3,2,1);FILE *fp, *fopen();Main() int c, g, k, I, j, b10;long int e, d, t, tt, dd;char * p;for(i=0; i=n; i+)for(j=0; j10; j+)scoreij=0;fP=fopen(“source“, “r“); /*以读方式打开文件 source*/p=fgets(s, 80, fp); /*读
4、 fp 所指文件的下一行字符串于 s*/while(*p)g=l; k=0; p+=40;while(k10)c=(*p+)-0)*10+(*p+)-0);bk+=c)if(c=n)if(c) i=0;While(U (1) /U);If(U (2) /U)g=0; break;elseg=0; break;If(g)For(i=0; ik; i+)If(bi)U(3) /U;p=fgets(s, 80, fP);Fclose(fp); /*关闭 fp 所指文件*/For(i=1; in; i+)For(t=0, d=0, j=0; j10; j+)t +=(e=scoreij);d +=e
5、* markj;tni-1=t; tdi-1=d; orderi-1=i;For(i=0; in-1; i+)k=i;for(j=i+1; jn; j+)if(t=tdorderj-1)(d=tdorderk-1)k=j;elseif(t=d)tt=U (4) /U;dd=U (5) /U;for(c=0; c10; c+)if(e=U (6) /U)0)k=j; break;elseif(e0)break;If(k!=i)t=orderk; orderk=orderi; orderi=t;For(i=0; i10; i+)Printf(“%2d%2d%d%d/n“, i+1, orderi,
6、 tdorderi-1, tnorderi-1);(分数:15.00)(1).【问题 1】请将以上 C 程序段中,(1)(6)空缺处的语句填写完整。(分数:7.50)_(2).【问题 2】以上 C 程序段中,采用了哪种算法对大学生得分进行排序?(分数:7.50)_二、B试题二/B(总题数:1,分数:15.00)阅读以下技术说明和 C 语言代码,根据要求回答问题 1 至问题 6。【说明】有两个进程(编号分别为 0 和 1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下【C 代码 1】给出了一种
7、实现方法。【C 代码 1】int flag2; /+flag 数组,初始化为 FALSE*/Enter_Critical_Section(int my_task_id, int other_task_id) while (flagother_task_id=TRUE); /*空循环语句*/flagmy_task_id=TRUE;Exit_Critical_Section(int my_task_id, int other_task_id) flagmy_task_id=FALSE;当一个进程要访问临界资源时,就可以调用【C 代码 1】给出的这两个函数。【C 代码 2】给出了进程 0 的一个例子
8、。【C 代码 2】Enter_Critical_Section(0,1);使用这个资源Exit_Critical_Section(0,1);做其他的事情(分数:15.00)(1).【问题 1】什么是临界资源(critical resource)?请用 100 字以内的文字简要说明。(分数:2.50)_(2).【问题 2】【C 代码 1】所示的方法U (1) /U实现共享资源的互斥访问。(1) A能够 B不能(分数:2.50)_(3).【问题 3】【C 代码 1】采用了一种繁忙等待(busy waiting)的策略,这种策略的缺点是什么?请用 100 字以内的文字简要说明。(分数:2.50)_(
9、4).【问题 4】如果把 Enter_Critical_Section()函数中的两条语句互换一下位置,则可能会出现什么情况?(分数:2.50)_(5).【问题 5】 【C 代码 3】中 x,y 是两个已定义的整型变量。对该程序段进行覆盖测试时,必须适当地选取测试用例。如表 5-10 所示给出了可供选择的 4 组测试用例。若要实现语句覆盖,则至少应采用的测试用例是U (2) /U;若要实现条件覆盖,则至少应采用的测试用例是U (3) /U;若要实现路径覆盖,则至少应采用的测试用例是U (4) /U或U (5) /U。 【C 代码 3】 int a:=0; if (x=O struct ele
10、* next;elem;main(int argc, char * argv)FILE *fp; elem *h, *u, *proc();if(argc=2 fclose(fp);output(h);while(h I=NULL)u=h*next; free(h); h=u;elem * proc(FILE *fp)int n, m; elem *u, *v, *p, *base;base=NULL;fscanf(fp, “%d, while(!feof(fp)fscanf(fp, %d, for(v=base; v!=NULL u=v, v=v-next);if(U (1) /U)if(U
11、 (2) /U)base=v-next;elseu-next=v-next;v-q+=m;elsev=(elem *)malloc(Sizeof)elem);v-no=n; v-q=m; p=base;while(p !=NULL)if(U (3) /U)break;else u=p; p=p-next;if(U (4) /U)base=v;elseu-next=v;U (5) /U;Fscanf(fp, “%d“, return base;Output(elem *head)int count, order; elem *u, *v;printf(“ORDER QUANTITY COUNT
12、NUMBER/n“);u=head; order=1;while(u !=NULL)for(count=1, v=u-next; U(6) /U;count+, v=v-next);printf(“%4d%9d%6d“, order, u-q, count);order+=count;for(;U (7) /U;printf(“%4d“, u-no), u=u-next);printf(“/n“);(分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)2.【说明】一般的树结构常采用孩子一兄弟表示法表示,即用二叉链表代表树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子
13、节点和下一个兄弟节点,例如,如图 5-9(a)所示的树和如图 5-9(b)所示的树的孩子一兄弟表示。(分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)3.【说明】某绘图系统存在 Point、Line 和 Square 这三种图元,它们具有 Shape 接口,图元的类图关系如图 5-10 所示。(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)4.【说明】 某绘图系统定义了一个抽象类 Ishape,现有 3 个类 Cpoint,CLine 和 Ccircle,它们都具有IShape 界面。相应的类图关系如图 5-11 所示。 (分数:15.00)_七、B试
14、题七/B(总题数:1,分数:15.00)5.【说明】某绘图系统存在 Point、Line 和 Square 3 种图元,它们具有 Shape 接口,图元的类图关系如图 5-12 所示。(分数:15.00)_初级程序员下午试题-52 答案解析(总分:105.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读以下应用程序说明和 C 程序,将 C 程序段中(1)(6)空缺处的语句填写完整。【说明】某大学征询学生意见,从各学院预选的 n(n60)位优秀大学生中,评选出“十佳大学生”。以下【C 程序】对各位学生选票进行相关的统计、排序等处理。(1)各学院预选的优秀大学生按
15、1,2,顺序连续编号,每个编号用两个字符表示,即 01,02,。(2)所回收的选票按以下格式存于文件 source 中,每行字符串对应一张选票。其中,姓名占 10 个字符,学院名称占 30 个字符,大学生编号占 20 个字符。(3)对应名次的大学生编号可以有空缺,但必须用 00 表示。(4)若编号超出规定范围,或编号重复出现,按照废票处理。(5)按选票中所列“十佳大学生”顺序给出各名大学生的得分。评分标准如下:一 二 三 四 五 六 七 八 九 十15 12 9 7 6 5 4 3 2 1(6)按各位大学生得分数由高到低顺序排队,并按以下格式列出“十佳大学生”排行表。名次 大学生编号 合计得分
16、 合计得票数若得分相同,则得票数多的在前;若得分和得票数都相同,则编号小的在前。以下【C 程序】中所应用到的函数 fopen、fclose 和 fgets 都是 I/O 程序库中的函数。【C 程序】#include stdio. h#define n 60long int tnn, tdn, scoren+110, ordern;char s80;int mark=(15,12,9,7,6,5,4,3,2,1);FILE *fp, *fopen();Main() int c, g, k, I, j, b10;long int e, d, t, tt, dd;char * p;for(i=0;
17、i=n; i+)for(j=0; j10; j+)scoreij=0;fP=fopen(“source“, “r“); /*以读方式打开文件 source*/p=fgets(s, 80, fp); /*读 fp 所指文件的下一行字符串于 s*/while(*p)g=l; k=0; p+=40;while(k10)c=(*p+)-0)*10+(*p+)-0);bk+=c)if(c=n)if(c) i=0;While(U (1) /U);If(U (2) /U)g=0; break;elseg=0; break;If(g)For(i=0; ik; i+)If(bi)U(3) /U;p=fgets(
18、s, 80, fP);Fclose(fp); /*关闭 fp 所指文件*/For(i=1; in; i+)For(t=0, d=0, j=0; j10; j+)t +=(e=scoreij);d +=e * markj;tni-1=t; tdi-1=d; orderi-1=i;For(i=0; in-1; i+)k=i;for(j=i+1; jn; j+)if(t=tdorderj-1)(d=tdorderk-1)k=j;elseif(t=d)tt=U (4) /U;dd=U (5) /U;for(c=0; c10; c+)if(e=U (6) /U)0)k=j; break;elseif(e
19、0)break;If(k!=i)t=orderk; orderk=orderi; orderi=t;For(i=0; i10; i+)Printf(“%2d%2d%d%d/n“, i+1, orderi, tdorderi-1, tnorderi-1);(分数:15.00)(1).【问题 1】请将以上 C 程序段中,(1)(6)空缺处的语句填写完整。(分数:7.50)_正确答案:()解析:(1)c!=bi+,或其他等价形式 (2)ik,或其他等价形式 (3)scorebii+,或其他等价形式 (4)orderj (5)ordcrk (6)scorettc-scoreddc 要点解析 仔细阅读本
20、试题的程序说明和【C 程序】后,可得出评选“十佳大学生”的数据格式和算法。该 C 程序先读入一行字符,进行合法性检查后再进行选票统计;读入所有选票后,再计算每个大学生的得分和选票数,最后进行排序输出。 通常,阅读一个 C 程序时,应先明白程序中所用变量的含义,这对解题是很有帮助的。程序中所用变量的含义,除了可在程序说明中了解之外,还可以通过程序中的输入/输出语句来获知。对照程序说明中给出的输出次序可以了解到,数组 order 是用来存放第 i 名大学生的编号,数组 td 用来存放大学生的总分,数组 tn 用来存放大学生得到的选票总数。 程序中用 while(*p).语句所包含的程序段进行合法性
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 52 答案 解析 DOC
