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

    【计算机类职业资格】初级程序员下午试题-99及答案解析.doc

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

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

    【计算机类职业资格】初级程序员下午试题-99及答案解析.doc

    1、初级程序员下午试题-99 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明下面的流程图用来说明如何在数组中的指定位置插入一个数。注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述; SIZE 定义位数组的大小。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_二、试题二(总题数:1,分数:15.00)函数 2.1 说明函数 int factors(int n)的功能是判断整数 n(n=2)是否为完全数。如果 n 是完全数,则函数返回 0,否则返回-1。所谓“完全数”是指整数 n 的

    2、所有因子(不包括 n)之和等于 n 自身。例如:28 的因子为1,2,4,7,14,而 28=1+2+4+7+14,因此 28 是“完全数”。函数 2.1int factors (int n)int i/s;for (i=1, s=0; i=n/2;i+)if (n%i=0) (1) ;if( (2) ) return 0;rerurn -1;函数 2.2 说明函数 int maxint(int a,int k)的功能是用递归方法求指定数组中前 k 个元素的最大值,并作为函数值返回。函数 2.2int maxint (int a ,int k)int t;if( (3) ) return (4

    3、) ;t = maxint (a+1, (5) ) ;return (a0t) ? a0:t;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:15.00)说明本程序中的函数 void first_jnsert(NODE*p,int v)的功能是在已知链表的首表元之前插入一个指定的表元; 函数 NODE *reverse_copy(NODE *p)的功能是按已知链表复制出一个新的链表,但新的链表的表元链接顺序与已知链表的表元链接顺序相反; 函数 voidprint_link(NODE*p)用来输出链表中各表元的值; 函数 v

    4、oid free_link(NODE*p)用来释放链表全部表元空间。函数#include stdio.n#include malloc.htypedef struct nodeint val;struct node *next;NODE;void first_insert (NODE *p,int v)NODE *q= (NODE *) malloc (sizeof (NODE) ;q-val=v;(1) ;*p= (2) ;NODE *reverse_copy (NODE *p)NODE *u;for (u=NULL; p;p=p-next)first_insert( (3) );retur

    5、n u;void print_link (NODE *p)for (; (4) ) printf (“%d/t“ ,p-val) ;printf (“ /n“) ;void free_link (NODE *p)NODE *u;while (p ! =NULL) u=p-next ;free (p);(5) ;void main ()NODE *link1, *link2 ;int i;link1=NULL ;for(i=1;i=10;i+)first_insert (link1,i) ;link2=reverse_copy (link1) ;print_link (link1) ;free_

    6、link (link1) ;print_link (link2);free_link (link2);(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_四、试题四(总题数:1,分数:15.00)说明“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为 S,设有 N 件物品,其重量分别为w1、w2、wn,希望从 N 件物品中选出若干件物品,并使所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于 S。函数#include stdio.h#define N 7#define S 15typedef structint s;int n;int jo

    7、b;KNAPTP;int knap (int S,int n) ;main () if (knap (S,N) printf (“OK! /n“);else printf (“NO! /n“) ;int knap (int S,int n) KNAPTP stack100 ,x;int top,k, rep;x.S=S; x.n=n;x.job=0;top=1; stacktop =x;k=0;while (1) x=stack top ;rep=1;while (! krep) if(x.s=0) k=1;else if x.s0 |x.n=0) rep=0;else x.s= (2) ;x

    8、. job=1;(3) =x;if(!k)rep=1;while(top=1rep) x=stack top-1;if (x,job=1) x.s+=wx.n+1;(4) ;stack +top =x;(5) ;if(k)while (top=1) x=stack top- ;if (x.job=1)printf (“M/t“,wx.n+1) ;return k;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_五、试题五(总题数:1,分数:15.00)说明下面程序定义了一个类 Shape 及其成员函数,然后从类 Shape 派生出类 Point、 类

    9、Circle、类Cylinder,以及它们的成员函数。C+程序#include “iostream.h“class Shapepublic:virtual void printShapeName() const=0; /纯虚函数virtual float area() const return 0.0;virtual float volumn() const return 0.0;class Point: public Shapepublic:Point (float a=0, float b=0)(x=a; y=b; )void setPoint(float a,float b)(x=a;

    10、y=b;)float getX() constreturn x;float getY() constreturn y;virtual void printShapeName()const(1) ;private:float x,y; class Circle: (2) public:Circle(float r=0.0, float a=0.0, float b=0 .0):Point (a,b)radius=r0 ? r:0; void setRadius(float r)radius=r0? r:0; float getRadius () constreturn radius; virtu

    11、al float area () constreturn 3 .14 259*radius*radius ; virtual void printShapeName () constcout“circle:“; private :float radius;class Cylinder: (3) public :Cylinder(float h=0.0,float r=0.0,float x=0.0,float y=0.0): (4) height=h0 ? h:0; void setHeight (float h)height=h0 ?h:0; virtual float area () co

    12、nstreturn (5) ; virtual float volumn () constfloat r=Circle: getRadius ();return 3.14159*r*r*height;virtual void printShapeName () const(cout“cylinder: “ ; private :float height;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_六、试题六(总题数:1,分数:15.00)说明已知类 Stock 和类 cxyjava 都定义在 cxyjava.java 文件中,类 Stock 的定义

    13、中第 14 行前共有四行出现了错误,将下面代码修改正确并完善后的输出结果为:0:01:23(分数:15.00)(1).请指出错误所在行号并给出该行修改后的完整结果。(分数:7.50)填空项 1:_(2).请补齐第 21 行代码中的空缺。Java 代码01 public class Stock02 static 03 shares = 0;04 share_val = 0.0;05 06 public Stock () getData (); 07 public Stock(int n, int pr=0)08 shares = n;09 share_val = pr;10 getData ()

    14、;11 12 public void getData() 13 System. out .println (shares + “ : “ +share_val) ;14 15 private int shares,16 private int share_val;17 ;1819 public class cxyjava20 public static void main (String args 21 Stock a = (1) ;22 Stock b = new Stock(1,23);24 25 (分数:7.50)填空项 1:_初级程序员下午试题-99 答案解析(总分:90.00,做题时

    15、间:90 分钟)一、试题一(总题数:1,分数:15.00)说明下面的流程图用来说明如何在数组中的指定位置插入一个数。注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述; SIZE 定义位数组的大小。(分数:15.00)填空项 1:_ (正确答案:0, SIZE-1,1,)解析:填空项 1:_ (正确答案:bi=V;)解析:填空项 1:_ (正确答案:bi+1=i)解析:填空项 1:_ (正确答案:bi+1=ai;)解析:填空项 1:_ (正确答案:bi=ai;)解析:解析 本题考查的是流程图。通过阅读流程图,我们可以大致判断出该流程图的思路,遍历数组来查找插入位置,如果

    16、要插入到第 x 个数,那么数组中第 x 个以前的数只要保持原来的顺序就可以了,第 x 个以后的数只要把其在数组中的位置相应的加一就可以了。所以,循环开始,要遍历数组,初值为 0,终值为 SIZE-1,增量为 1,即空(1)填入 0,SIZE-1,1。当 i 与 x 相等时,就把其插入,把第 i 项往后移一位,所以空(2)填入 bi=V,空(3)填入 bi+1=ai。当 i 与 x 的关系是大于或者小于时,我们就按照上面的思路往后移位,或者保持位置不变,空(4)填入 bi+1=ai,空(5)填入 bi=ai。二、试题二(总题数:1,分数:15.00)函数 2.1 说明函数 int factors

    17、(int n)的功能是判断整数 n(n=2)是否为完全数。如果 n 是完全数,则函数返回 0,否则返回-1。所谓“完全数”是指整数 n 的所有因子(不包括 n)之和等于 n 自身。例如:28 的因子为1,2,4,7,14,而 28=1+2+4+7+14,因此 28 是“完全数”。函数 2.1int factors (int n)int i/s;for (i=1, s=0; i=n/2;i+)if (n%i=0) (1) ;if( (2) ) return 0;rerurn -1;函数 2.2 说明函数 int maxint(int a,int k)的功能是用递归方法求指定数组中前 k 个元素的

    18、最大值,并作为函数值返回。函数 2.2int maxint (int a ,int k)int t;if( (3) ) return (4) ;t = maxint (a+1, (5) ) ;return (a0t) ? a0:t;(分数:15.00)填空项 1:_ (正确答案:s+=i)解析:填空项 1:_ (正确答案:n=s)解析:填空项 1:_ (正确答案:k-1 或 k-1=0)解析:填空项 1:_ (正确答案:a0或*a 或 ak-1)解析:填空项 1:_ (正确答案:k-1 或-k)解析:解析 对于函数 1,是判断整数 n(n=2)是否为完全数。首先用 for 循环求该整数的所有因

    19、子之和,所以空(1)填 s+=i。若其和等于整数本身,则为完全数,返回值为 0,则空(2)填 n=s; 否则返回值为-1。对于函数 2,是用递归方法找出数组中的最大元素。该递归的出口条件为 k=1,即空(3)填 k=1 或 k-1=0; 只有一个数时,它本身就是最大的,空(4)填 a0或*a 或 ak-1; 对于多个数的情况,在剩下的 k-1 个元素中找到最大的,并与首元素值比较,返回最大的一个,所以空(5)填 k-1 或-k。三、试题三(总题数:1,分数:15.00)说明本程序中的函数 void first_jnsert(NODE*p,int v)的功能是在已知链表的首表元之前插入一个指定的

    20、表元; 函数 NODE *reverse_copy(NODE *p)的功能是按已知链表复制出一个新的链表,但新的链表的表元链接顺序与已知链表的表元链接顺序相反; 函数 voidprint_link(NODE*p)用来输出链表中各表元的值; 函数 void free_link(NODE*p)用来释放链表全部表元空间。函数#include stdio.n#include malloc.htypedef struct nodeint val;struct node *next;NODE;void first_insert (NODE *p,int v)NODE *q= (NODE *) malloc

    21、 (sizeof (NODE) ;q-val=v;(1) ;*p= (2) ;NODE *reverse_copy (NODE *p)NODE *u;for (u=NULL; p;p=p-next)first_insert( (3) );return u;void print_link (NODE *p)for (; (4) ) printf (“%d/t“ ,p-val) ;printf (“ /n“) ;void free_link (NODE *p)NODE *u;while (p ! =NULL) u=p-next ;free (p);(5) ;void main ()NODE *li

    22、nk1, *link2 ;int i;link1=NULL ;for(i=1;i=10;i+)first_insert (link1,i) ;link2=reverse_copy (link1) ;print_link (link1) ;free_link (link1) ;print_link (link2);free_link (link2);(分数:15.00)填空项 1:_ (正确答案:q-next=*p)解析:填空项 1:_ (正确答案:q)解析:填空项 1:_ (正确答案:u,p-val)解析:填空项 1:_ (正确答案:p!=NULL; p+)解析:填空项 1:_ (正确答案:p

    23、=u)解析:解析 本题涉及的内容与链表有关。函数中的参数 NODE *p 为指向链表首位地址的指针。在链表中插入元素可以概括为对元素赋值和调整链表中元素指针两部分。函数 first_insert(NODE *p,int v)是在已知链表的首表元之前插入一个指定的表元,空(1)应填 q-next=*p,空(2)应填 q。函数 NODE *reverse_copy(NODE *p)是按已知链表复制出一个表元链接顺序相反的链表,空(3)应填u,p-val。函数 print_link(NODE*p)用来输出链表中各表元的值,空(4)应填 p!=NULL;p+。函数 free_link(NODE *p)

    24、用来释放链表全部表元空间,即空(5)应填 p=u。四、试题四(总题数:1,分数:15.00)说明“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为 S,设有 N 件物品,其重量分别为w1、w2、wn,希望从 N 件物品中选出若干件物品,并使所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于 S。函数#include stdio.h#define N 7#define S 15typedef structint s;int n;int job;KNAPTP;int knap (int S,int n) ;main () if (knap (S,N) printf (“OK! /n

    25、“);else printf (“NO! /n“) ;int knap (int S,int n) KNAPTP stack100 ,x;int top,k, rep;x.S=S; x.n=n;x.job=0;top=1; stacktop =x;k=0;while (1) x=stack top ;rep=1;while (! krep) if(x.s=0) k=1;else if x.s0 |x.n=0) rep=0;else x.s= (2) ;x. job=1;(3) =x;if(!k)rep=1;while(top=1rep) x=stack top-1;if (x,job=1) x

    26、.s+=wx.n+1;(4) ;stack +top =x;(5) ;if(k)while (top=1) x=stack top- ;if (x.job=1)printf (“M/t“,wx.n+1) ;return k;(分数:15.00)填空项 1:_ (正确答案:top=1 !k 或 top0 k=0)解析:填空项 1:_ (正确答案:x.s-wx.n-)解析:填空项 1:_ (正确答案:stack+top)解析:填空项 1:_ (正确答案:x.job=2)解析:填空项 1:_ (正确答案:rep=0)解析:解析 k 记录是否找到一组解的标记。若栈不空且还未找到解,则开始进入循环。所以

    27、空(1)填top=1 !k 或 top0 k=0。当没有发现解,同时背包还有容量且物品还有,则将修改剩下的容量 x.s=x.s-wx.n-,并压栈后,继续循环。因此空(2)和空(3)的答案分别为 x.s-wx.n-和stack+top。其中,当没有找到解时,退栈且应该把占用的容量返回,并记录该物品不是解中的物品,即空(4)填 x.job=2,空(5)填 rep=0。五、试题五(总题数:1,分数:15.00)说明下面程序定义了一个类 Shape 及其成员函数,然后从类 Shape 派生出类 Point、 类 Circle、类Cylinder,以及它们的成员函数。C+程序#include “ios

    28、tream.h“class Shapepublic:virtual void printShapeName() const=0; /纯虚函数virtual float area() const return 0.0;virtual float volumn() const return 0.0;class Point: public Shapepublic:Point (float a=0, float b=0)(x=a; y=b; )void setPoint(float a,float b)(x=a; y=b;)float getX() constreturn x;float getY()

    29、 constreturn y;virtual void printShapeName()const(1) ;private:float x,y; class Circle: (2) public:Circle(float r=0.0, float a=0.0, float b=0 .0):Point (a,b)radius=r0 ? r:0; void setRadius(float r)radius=r0? r:0; float getRadius () constreturn radius; virtual float area () constreturn 3 .14 259*radiu

    30、s*radius ; virtual void printShapeName () constcout“circle:“; private :float radius;class Cylinder: (3) public :Cylinder(float h=0.0,float r=0.0,float x=0.0,float y=0.0): (4) height=h0 ? h:0; void setHeight (float h)height=h0 ?h:0; virtual float area () constreturn (5) ; virtual float volumn () cons

    31、tfloat r=Circle: getRadius ();return 3.14159*r*r*height;virtual void printShapeName () const(cout“cylinder: “ ; private :float height;(分数:15.00)填空项 1:_ (正确答案:cout“Point:/)解析:填空项 1:_ (正确答案:public Point)解析:填空项 1:_ (正确答案:public Circle)解析:填空项 1:_ (正确答案:Circle(r,x,y))解析:填空项 1:_ (正确答案:2*Circle:area()+2*3.

    32、14159*Circle:getRadius()*height)解析:解析 本题以 C+语言为载体,考查面向对象的对象设计中的几个重要概念,继承和抽象类。本程序的功能是通过一个公共接口 printShapeName()来打印不同的图形的名称。试题中共定义了 4 个类,Shape、Point、Circle 和 Cylinder(圆柱),在完成本试题时,一个重要的环节是确定这 4 个类之间的继承关系。首先,确定基类。题目的说明已经指出,类 Shape 是一个抽象类,那么 Shape 只能作为基类。其次,由 Shape 派生出了 Point,空(1)要求给出 printShapeName()的实现体

    33、:打印图形的名称,即cout“Point:“。空(2)考查基类及继承方式,由于在 Circle 的构造函数中使用了 Point 的构造函数,所以 Point 作为基类,又因为无法确定 Circle 是否会作为其他类的基类(若存在这种情况,该类中的某些成员函数可能会是其他类的公共接口),因此选择 public 方式,则空(2)应填入 public Point,同样的情况,空(3)应填入 public Circle,空(4)应填入对基类构造函数的调用 Circle(r,x,y)。空(5)考查对基类成员函数的调用 2*Circle:area()+2*3.14159*Circle:getRadius(

    34、)*height。六、试题六(总题数:1,分数:15.00)说明已知类 Stock 和类 cxyjava 都定义在 cxyjava.java 文件中,类 Stock 的定义中第 14 行前共有四行出现了错误,将下面代码修改正确并完善后的输出结果为:0:01:23(分数:15.00)(1).请指出错误所在行号并给出该行修改后的完整结果。(分数:7.50)填空项 1:_ (正确答案:错误 1:第 1 行,去掉 public错误 2:第 2 行,去掉 static错误 3:第 4 行,share_val=0错误 4:第 7 行,去掉“=0/)解析:(2).请补齐第 21 行代码中的空缺。Java 代

    35、码01 public class Stock02 static 03 shares = 0;04 share_val = 0.0;05 06 public Stock () getData (); 07 public Stock(int n, int pr=0)08 shares = n;09 share_val = pr;10 getData ();11 12 public void getData() 13 System. out .println (shares + “ : “ +share_val) ;14 15 private int shares,16 private int sh

    36、are_val;17 ;1819 public class cxyjava20 public static void main (String args 21 Stock a = (1) ;22 Stock b = new Stock(1,23);24 25 (分数:7.50)填空项 1:_ (正确答案:new Stock(),或者 new Stock(0,0))解析:解析 Java 代码中,一个文件只能有一个与文件同名的公共类,所以第 1 行 Stock 类前面的public 修饰符要去掉。静态的初始化区域只能对类的静态变量进行初始化,而 shares 和 share_val 不是静态变量,所以需要去掉第 2 行的 static。第 16 行将 share_val 定义为 int 型,所以第 4 行赋值有误,需要改为 0。第 7 行 Stock 类的构造函数没有默认参数的用法,所以需要将默认值去掉。对于问题 2由于程序输出的第一行为 0:0,所以直接调用构造函数 Stock(),因为默认参数均已为 0,或者调用构造函数 Stock(0,0)也可实现。


    注意事项

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




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

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

    收起
    展开