【计算机类职业资格】初级程序员下午试题-93及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-93及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-93及答案解析.doc(20页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-93 及答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)【算法说明】某商务交流中心共有 N 间客房。每间客房的房间号、房间等级、床位数及占用状态分别存放在数组ROOM、RANK、NBED 和 STATUS 中。房间等级值为 1、2 或 3。房间的状态值为 0(空闲)或 1(占用)。客房是以房间(不是床位)为单位出租的。程序流程图(见图 2-11)所反映的算法是,根据几个散客的要求预订一间空房。程序的输入为:人数 M,房间等级要求尺(R=0 表示任意等级都可以)。程序的输出为:所有可供选择的房间号。(分数:15.00)_二、试题二
2、(总题数:1,分数:15.00)1.【说明】以下【C 程序】能将自然数 1,2,N 2按蛇形方式逐个存入 N 阶矩阵。换言之,程序从 anO开始到 aOn。为止(n=N-1)顺序填入自然数,交替地对每一斜列从左上元素向右下元素或从右下元素向左上元素存数。例如,当 N=5 时,程序输出结果如图 2-12 所示;当 N=8 时,程序输出结果如图 2-13 所示。(分数:15.00)_三、试题三(总题数:1,分数:15.00)2.【说明】某超市集团为发展业务向社会公开招聘 N 个工种的工作人员,每个工种各有不同的编号(1 至 M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该集团
3、公司将按应聘者的成绩从高分至低分的顺序进行排队录取。具体录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去 5 分后,重新排队,并按其第二志愿录取。以下 C 程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都作了录取处理后跳出。C 程序中,类型 STU 包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组 rzl)的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。【C 程序】#include#define N 36#define EDMARK 5typed
4、ef 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(STU *p)for (;p!=NULL; p = p-next)printf( “%d(%d) /t“ , p-no, p-totalinsert(STU *p, STU *u)STU *v, *q;for (q = *p
5、;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, zl, z2 ;STU *p, *v, *q;fp = fopen(dataf, “r“ );if (fp = NULL)printf (“Cant open file %s.kn“ ,dataf);exit (0);fscanf (fp, “%d“ ,for (all = 0, i = 1; i = zn; i+)fscanf (fp, “%d“, rzi
6、.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 (fp);for (;all )p = head;head = head-next;if (rzp-zp-zi.count (6) )rzp-zp-zi.count +;insert(all-;continue;if (p-zi
7、= 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);printf(“ /n“);(分数:15.00)_四、试题四(总题数:1,分数:15.00)3.【说明】【C 程序 1】用回溯算法来产生由 0 或 1 组成的 2m个二进位串,使该串满足以下要求。视串为首尾相连的环,则由 m 位
8、二进制数字组成的 2m个子序列,每个可能的子序列都互不相同。例如,如果 m=3,在串 11101000 首尾相连构成的环中,由 3 位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是 111,110,101,010,100,000,001,011,如图 2-14 所示。(分数:15.00)_五、试题五(总题数:1,分数:15.00)【说明】某机动车驾驶员模拟考试系统的“交通禁令标志识别”窗体中,共有 1 个按钮(CmdTest)、6 个标签、 1个包含 10 个单选按钮的控件数组(OptPicture),如图 2-15 所示。其中,标签(LblPrompt1)“禁令标志”与标签
9、(LblTest)相对应,标签(LblPrompt2)“图片答案”与标签(LblAnswer)相对应,标签(LblEvaluate)为结果提示。窗体(Frm001)对象和单选按钮控件数组(OptPicture)对象的部分属性及属性值如表 2-15 所示。表 2-15 窗体、单选按钮控件数组的部分属性及属性值对 象 属 性 属性值(名称) Frm001Icon 变通标识MaxButton (1)窗体MinButton (2)(名称) optPictureIndex (3)Style 1-Graghics单选按钮控件数组Picture (装入相应图片)该程序运行时,单击【测试】按钮(CmdTest
10、),在标签(LblTest)中随机显示一个交通禁令标志名称,用户单击控件数组(OptPicture)相应单选按钮后,程序在标签(LblAnswer)给出用户所击单选按钮对应的交通禁令标志名称,在标签(LblEvaluate)给出正确或错误的提示结果,如图 2-15 和图 2-16 所示。(分数:15.00)_六、试题六(总题数:1,分数:15.00)4.【说明】以下【C+程序】实现一个简单的小型复数类 MiniComplex,该复数类能进行输入、输出、复数的加法、减法、乘法和除法运算,还可以进行复数的相等比较。【C+程序】#ifndef H_MiniComplex#define H_MiniC
11、omplex#include iostreamusing namespace std;class MiniComplexpublic: /重载流插入和提取运算符(1) ostreamreturn osObject;(2) istreamisObject complex.realPartchcomplex.imagPartch;return isObject;MiniComplex(double real=0,double imag=0); /构造函数MiniComplex operator+(const MiniComplex /重载运算符+MiniComplex operator-(cons
12、t MiniComplex /重载运算符-MiniComplex operator*(const MiniComplex /重载运算符*MiniComplex operator/(const MiniComplex /重载运算符/bool operator=(const MiniComplex /重载运算符=private :double (3) ;double imagPart;#end if#include “MiniComplex.h“bool MiniComplex:operator=(const MiniComplexMiniComplex:MiniComplex(double re
13、al,double imag)realPart= real; imagPart=imagPart;MiniComplex MiniComplex:operator+(const MiniComplextemp.realPart = realPart+ortherComplex. realPart;temp.imagPart = imagPart +ortherComplex. imagPart;return temp;(4) MiniComplex temp;temp.realPart= realPart-ortherComplex. realPart;temp.imagPart = imag
14、Part-ortherComplex. imagPart;return temp;MiniComplex MiniComplex:operator*(const MiniComplextemp.realPart = (realPart*ortherComplex. realPart)-(imagPart *ortherComplex.imagPart);temp.imagPart = (realPart*ortherComplex. imagPart)+(imagPart *ortherComplex.realPart);return temp;MiniComplex MiniComplex:
15、operator/(const MiniComplexfloat tt;tt=1/(ortherComplex.realPart*ortherComplex.realPart+ortherComplex.imagPart *ortherComplex. imagPart);temp.realPart=(realPart*ortherComplex, realPart)+(imagPart *ortherComplex. imagPart)*tt;temp.imagPart =(imagPart *ortherComplex. realPart)-(realPart*ortherComplex.
16、 imagPart)*tt;return temp;#include iostream#include MiniComplex.husing namespace std;int main()MiniComplex numl(23, 34),num2(56, 35);cout“Initial Value of num1=“num1“/n Initial Value of num2=“num2end1;coutnum1“+“num2“=“num1+num2end1; /使用重载的加号运算符coutnum1“-“num2“=“num1-num2end1; /使用重载的减号运算符coutnum1“*“
17、num2“=“num1*num2end1; /使用重载的乘号运算符coutnum1“/“num2“=“num1/num2end1; /使用重载的除号运算符(5) ;(分数:15.00)_七、试题七(总题数:1,分数:15.00)5.【说明】Stack 类是 java. ntil 包中专门用来实现栈的工具类。以下 Java 程序是一个不使用库函数而实现字符串反转的程序。例如,输入:123456,则输出:654321:输入:asdfeg,则输出:gefdsa。【Java 程序】import java.applet.Applet;import java.awt.*;import java.awt.e
18、vent.*;import java.util.*;public class UseStack extends Applet implements ActionListenerStack MyStack;Label prompt=new Label(“输入要反转字符:“);Button pushBtn=new Button(“压栈“);Button popBtn=new Button(“弹栈“); /反转TextField input=new TextField(5);int DrawStack =new int10; /记录堆栈中数据int PoppedOut=new int20; /记录被
19、弹出的数据int StackCnt=0; /记录模拟堆栈的数组中的数据个数String msg=“ “;public void init()MyStack=new Stack();add(prompt);add(input);add(pushBtn);add(popBtn);pushBtn.addActionListener(this);(1) public void paint(Graphics g)for (int i=10; iStackCnt; i+) /模拟显示堆栈内部的数据排列情况g.drawRect(50,200-i*20,80,20);g.drawString(Integer.
20、toString(DrawStacki),80,215-i*20);for (int i=0; (2) ) /显示被弹出的数据g.drawString(Integer.toString(PoppedOuti),200+i*20,100);g.drawString(“堆栈“,70,236);g.drawString(“栈底“,135,225);g.drawString(“栈顶“,160,225-StackCnt*20);g.drawString(msg,200,140);public void actionPerformed( (3) )if (e.getAct ionCommand () =
21、“压栈“) /压栈操作if(StackCnt10)MyStack.push(new Integer( (4) );DrawStackStackCnt+=Integer.parseInt(input.getText() );input.setText (“ “);elsemsg=“输入数据过多,请先弹栈!“else if (e.getActionCommand () = “弹栈“) /弹栈操作if( (5) )StackCnt-;PoppedOutPopCnt+=(Integer)(MyStack.pop().intValue();elsemsg=“堆栈已空,不能再弹栈!“;repaint();
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 93 答案 解析 DOC
