欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】程序员-13及答案解析.doc

    • 资源ID:1336094       资源大小:44.50KB        全文页数:6页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】程序员-13及答案解析.doc

    1、程序员-13 及答案解析(总分:55.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读以下说明和 C 程序,填充函数中的空缺。 说明 N 个游戏者围成一圈,从 1N 顺序编号,游戏方式如下;从第一个人开始报数(从 1 到 3 报数),凡报到3 的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。 下面的函数 playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N 个人围成的圈用一个包含 N 个结点的单循环链表来表示,如图 1 所示,游戏者的编号放在结点的数据域中。 在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量 c(初

    2、值为 1)用于计数,指针变量 p 的初始值为 head(如图 1 所示)。游戏时,从 p 所指向的结点开始计数,p 沿链表中的指针方向遍历结点,c 的值随 p 的移动相应地递增。当 c 计数到 2 时,就删除 p 所指结点的下一个结点(因下一个结点就表示报数到 3 的游戏者),如图 2 所示,然后将 c 设置为 0 后继续游戏过程。 (分数:15.00)二、试题二(总题数:1,分数:25.00)阅读以下说明和 Java 程序,填充程序中的空缺,将解答填入对应栏内。 说明 下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组

    3、互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图所示的 8 个点中,点(1,1)与(2,0.5)是间距最近的点对。 (分数:25.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:15.00)阅读以下说明和 C+代码,填补 C+代码中的空缺,将解答写在对应栏内。 说明 已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按 52 周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的 C+代码,

    4、其中定义了 4 个类:工资系统类 PayRoll、员工类 Emplovee、正式工类 Salaried 和计时工类 Hourly,Salaried 和 Hourly 是 Employee 的子类。 C+代码 /头文件和域名空间略 const int EMPLOYEE_NUM=5; class Employee protected: int emDCode; /员工号 string name; /员工姓名 double salary; /周发放工资 public: Employee(const int empCode,const string name) this-empCode=empCode

    5、; this-name=name; virtualEmployee() virtual void pay()=0; double getSalary()return this-salary; ; class Salaried 1 private: double payRate; /年薪 public: Salaried(const int empCode,const string void pay() this-salary= 2;/计算正式员工的周发放工资数 coutthis-name“:“this-salaryendl; ; class Hourly 3 private: double p

    6、ayRate; /小时工资数 int hours; /周工作小时数 public: Hourly(const int empCode, const string this-hours=hours, void pay() this-saiary= 4;/计算计时工的周发放工资数 coutthis-name“:this-salaryendl; ; class PayRoll public: void pay(Employee* e) for (int i=0; iEMPLOYEE_ NUM; i+) ei-pay(); ; int main() PayRoll* payRoll=new PayRo

    7、ll; 5 employeesEMPLOYEE_ NUM= new Salaried(1001,“Zhang San“,58000.00), /此处省略对其他职工对象的生成 new Hourly(1005,“L1“,12,50.00), ; payRoll-pay( 6); double total=0.0; for(int i=0;iEMPLOYEE_ NUM;i+) (total+=employeesi-getSalary(); /统计周发放工资总额 cout“总发放额=“totalendl; delete payRoll; retum 0;(分数:15.00)填空项 1:_填空项 1:_

    8、填空项 1:_填空项 1:_填空项 1:_填空项 1:_程序员-13 答案解析(总分:55.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读以下说明和 C 程序,填充函数中的空缺。 说明 N 个游戏者围成一圈,从 1N 顺序编号,游戏方式如下;从第一个人开始报数(从 1 到 3 报数),凡报到3 的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。 下面的函数 playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N 个人围成的圈用一个包含 N 个结点的单循环链表来表示,如图 1 所示,游戏者的编号放在结点的数据域中。 在函数中,

    9、以删除结点来模拟游戏者退出圈子的处理。整型变量 c(初值为 1)用于计数,指针变量 p 的初始值为 head(如图 1 所示)。游戏时,从 p 所指向的结点开始计数,p 沿链表中的指针方向遍历结点,c 的值随 p 的移动相应地递增。当 c 计数到 2 时,就删除 p 所指结点的下一个结点(因下一个结点就表示报数到 3 的游戏者),如图 2 所示,然后将 c 设置为 0 后继续游戏过程。 (分数:15.00)解析:1解析:q-next 或 p-next-next解析:0解析:p-next解析:p-code 本题要求完成程序,该程序的功能是删除报号为 3 的结点,直到剩下一个结点为止。while

    10、语句中的 n 的取值范围从 1 到 N,又因为 while 语句先执行中括号里的语句在判断 n 值,所以第一空应填 n1,while 语句中的 if 条件语句是判断 p 指向的下一结点是否该删除,若当 c 为 2 时,则 p 指向的当前结点报号为 2,p 指向的下一个结点,即 p-next 的报号应为 3,该删除,这时应该将 p-next的指向 c 为 3 的结点的下一个结点,即 p-next-next,再将 p-next 删除,所以第二空应该填 p-next-next,删除 p-next 之后将开始新一轮的报数,根据题意,将 c 值重新设置为 0 后继续,所以第三空对 c 重新赋值,应该填

    11、0,此时,n 个数已经删去一个数,所以 n 的值相应的要减少,if 语句执行完后,跳出 if 语句,将 p 重新赋值,即第四空 p=p-next,当从 1 到 n 都执行一遍后,会有一个人留下,即为获胜者,第五空是给获胜者编号赋值所以应该填 p-code,最后返回获胜者编号,该程序执行完毕。二、试题二(总题数:1,分数:25.00)阅读以下说明和 Java 程序,填充程序中的空缺,将解答填入对应栏内。 说明 下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点

    12、对。例如,在图所示的 8 个点中,点(1,1)与(2,0.5)是间距最近的点对。 (分数:25.00)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)解析:shortestDistancetmpDistance 本题考查考生使用 JAVA 语言进行面向对象程序设计的能力。首先要理解清楚题目中有关最近点对的概念和计算方法,然后阅读程序以实现该功能。 第一空处显示创建保存点坐标的数组。这里的 new 运算符用于开辟数组

    13、空间,其语法规则为:new 类型初值。第一空处需要填入一类型修饰符,因此应填入 GPoint。类似的思路,第二空处考查 Java 语言中用 new 初始化数组,应填入 new GPoint。 根据程序段中的注释,第三空和第四空处实现计算每一对点之间的距离。第三空处为循环控制变量,因为要计算所有对点间的距离,因此应填入。第四空应调用 computeDistance 类的 distance 函数计算每一对点 pointsi和 pointsj之间的距离,因此应填入 getDistance(pointsi,pointsj)。 第五空处应填入一个判断条件,以输出距离最小的点对。这可通过比较 shorte

    14、stDistance 和tmpDistance 来实现。因此,第五空处应填入 shortestDistancetmpDistance。三、试题三(总题数:1,分数:15.00)阅读以下说明和 C+代码,填补 C+代码中的空缺,将解答写在对应栏内。 说明 已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按 52 周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的 C+代码,其中定义了 4 个类:工资系统类 PayRoll、员工类 Emplovee、正式工类 Salaried

    15、 和计时工类 Hourly,Salaried 和 Hourly 是 Employee 的子类。 C+代码 /头文件和域名空间略 const int EMPLOYEE_NUM=5; class Employee protected: int emDCode; /员工号 string name; /员工姓名 double salary; /周发放工资 public: Employee(const int empCode,const string name) this-empCode=empCode; this-name=name; virtualEmployee() virtual void pa

    16、y()=0; double getSalary()return this-salary; ; class Salaried 1 private: double payRate; /年薪 public: Salaried(const int empCode,const string void pay() this-salary= 2;/计算正式员工的周发放工资数 coutthis-name“:“this-salaryendl; ; class Hourly 3 private: double payRate; /小时工资数 int hours; /周工作小时数 public: Hourly(co

    17、nst int empCode, const string this-hours=hours, void pay() this-saiary= 4;/计算计时工的周发放工资数 coutthis-name“:this-salaryendl; ; class PayRoll public: void pay(Employee* e) for (int i=0; iEMPLOYEE_ NUM; i+) ei-pay(); ; int main() PayRoll* payRoll=new PayRoll; 5 employeesEMPLOYEE_ NUM= new Salaried(1001,“Zh

    18、ang San“,58000.00), /此处省略对其他职工对象的生成 new Hourly(1005,“L1“,12,50.00), ; payRoll-pay( 6); double total=0.0; for(int i=0;iEMPLOYEE_ NUM;i+) (total+=employeesi-getSalary(); /统计周发放工资总额 cout“总发放额=“totalendl; delete payRoll; retum 0;(分数:15.00)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unkn

    19、own)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)填空项 1:_ (正确答案:*unknown)解析:employees 本题考查考生利用 C+语言设计程序的能力,涉及类、函数和虚函数的定义和相关操作,以及继承关系。考生需要根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成程序的设计。根据题目中有关信息的描述,Salaried 和 Hourly 是 Employee 的子类,它们之间是继承关系。第一空和第三空处需要体现出类之间的继承关系。在子类的构造函数中,调用父类的构造函数,所以继承的权限为public,其语法为:public 父类

    20、名。因此,第一空处和第三空处均应填入::public Employee。 根据题目的描述及程序段的注释,第二空处实现计算正式员工的周发放工资数。正式员工的周发放工资数为年薪除以总周数,因此应填入 payRate/52。第四空处实现计算计时工的周发放工资数。计时工的周发放工资数为周工作小时数乘上小时工资数。因此,第四空处应填入 hours* PayRate。 第五空处用于生成 5 个员工的信息,此处缺少一个类型修饰符。由对象的生成信息可知,此处应填入Employee*或 static Employee*。 第六空处调用工资系统类 PayRoll 中的 pay 函数。由类 PayRoll 中构造函数 void pay(Employee* e)的形式可以确定,第六空处应填入 employees。


    注意事项

    本文(【计算机类职业资格】程序员-13及答案解析.doc)为本站会员(twoload295)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开