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

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

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

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

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

    1、初级程序员下午试题-23 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】已知头指针分别为 La和 lb的有序单链表,其数据元素都是按值非递减排列。现要归并 La和 Lb得到单链表 Lc,使得 Lc中的元素按值非递减排列。程序流程图如下所示:(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.【程序 2.1说明】已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。【程序 2.1】#include stdioh#define N 100void main()float aN+l,x;int i,p;

    2、printf(“输入已经排好序的数列: “);for(i=0; iN; i+)scanf(%f“,printf(“输入要插入的数:“);scanf(“%f“,for(i=0,p=N; iN; i+)if(xai)(1) break;for(i=N-1; i=p; i-)(2) (3) for(i=0; i=N; i+)prinff(“%f/t“,ai);【程序 2.2说明】本程序用变量 count统计文件中字符的个数。【程序 2.2】#include stdio.h#include stdlib.hvoid main()FILE *fp;long count=0;if(fp=fopen(“le

    3、tter.txt“,“r“)=NULL)printf(“can not open file/n“);exit(0);while(!feof(fp)(4) count+;printf(“count=%d/n“,count);(5) (分数:15.00)_三、试题三(总题数:1,分数:15.00)3.【说明】Fibonacci数列 A=1,1,2,2,5,8,)有如下性质:a0=a1=1ai=ai-1+ai-2,i1对于给定的 n,另外有一个由 n个元素组成的数列 xn,该数列中各元素的值为:xi=ai/ai+1,i=0,1,n现要求对 xn中的元素按升序进行排序,然后以分数形式输出排序后的 xn

    4、。例如 n=5时,排序前的xn=1/1,1/2,2/3,3/5,5/8,排序后的 xn=1/2,3/5,5/8,2/3,1/1。程序中函数 make()首先生成排序前的xn,然后调用函数 sort()进行排序,最后输出所求结果。【程序】#include stdio.h#include stdlib.h#include malloc.hstruct factlong m,n;void sort(int n,struct fact *p)int a;long s,t,u,v;struct fact *q,*end;for(end=p+(n-1),a=1;a;end-)for(a=0,q=p;qen

    5、d;p+)s=q-m;t=q-n;u=(q+1)-m;v=(q+1)-n;if( (1) )q-m=u;(2) (3) (q+1)-n=t;a=1;void make(int n)int i;long a,b,c;struct fact *x,*y;x=(struct fact *)malloc(sizeof(struct fact)*n);x-m=1:x-n=1;for(a=1,b=1,i=2;i=n;i+)(4) a=b;b=c;(x+(i-1)-m=a;(x+(i-1)-n=b;(5) printf(“x%d=%1d/%1d“,n,x-m,x-n);for(y=x+1;yx+n;y+)p

    6、rintf(“,%1d/%1d“,y-m,y-n);printf(“/n“);free(x);void main()int n;printf(“input n:“);scanf(“%d“,make(n);(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.【说明】本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:假定原文为 C1,C2,C3,,C n加密后形成的密文为 S1,S2,S3,,S n,首先读入正整数 key(key1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.【说明

    7、】字符串在程序设计中扮演着重要角色。现需要设计字符串基类 string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类 edlt_string,派生于 string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。【程序】#include iostream.h#include stdio.h#include string.hclass stringint length;char *data;public:int get_length() return length;char *get_data() return data;string() delete dat

    8、a;int set data(int in_length, char *in_data);int set_data(char *data);void print() coutdataendl;class edit_string: public stringint cursor;public:int get_cursor() return cursor;void move_cursor(int dis) cursor=dis;int add_data(string *new_data);void delete_data(int num);int string:set_data(int in_le

    9、ngth,char *in_data)length=in_length;if(!data)delete data;(1) strcpy(data,in_data);return length;int string:set data(char *in_data)(2) if(!data)delete data;(1) strcpy(data,in_data);return length;int edit_string:add_data(string *new_data)int n,k,m;char *cp,*pt;n=new_data-get_length();pt=new_data-get_d

    10、ata();cp=this-get_data();m=this-get_length();char *news=new charn+m+1;for(int i=0; icursor; i+)newsi=cpi;k=i;for(int j=0; jn; i+,j+)newsi=ptj;cursor=i;for(j=k; jm; j+,i+)(3) newsi=/0;(4) delete news;return cursor;void edit string:delete_data( int num)int m;char *cp;cp=this-get_data();m=this-get_leng

    11、th();for(int i=cursor; im; i+)(5) cpi=/0;(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.【说明】IC卡和 200卡都是从电话卡派生的。下面的程序将电话卡定义为抽象类。其中 balance 为双精度变量,代表电话卡中的余额;cardNumber 是长整型变量,代表电话卡的卡号;password 是整型变量,代表电话卡的密码;connectNumber 是字符串变量,代表电话卡的接入号码;connected 是布尔变量,代表电话是否接通。performDial()实现各种电话接通后的扣除费用的操作。其中 200卡每次通话扣除 0.5元的

    12、通话费用和附加费用;IC 卡每次通话扣除 0.9元的通话费。TimeLeft()方法用于测试电话卡余额还可以拨打电话的次数。performConnection()用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。【程序】abstract class PhoneCarddoubte balace;(1) perfermDial();double getBalance()return balance; double TimeLeft()double current=balance;int times=0;do(2) times+;white(balance=0);balance=curr

    13、ent;return times-1;abstract class Number_PhoneCard extends PhoneCardlong cardNumber:int password;String connectNumber;Boolean connected;Boolean performConnection(long cn, int pw)if(cn=cardNumber return true;else return false;class IC Card (4) boolean performDial()if(balance0.9)balance-=0.9;return tr

    14、ue;else return false;class D200_Card (4) static double additoryFee;static additoryFee=0.1; boolean performDial()if(balance(0,5+additeryFee)(5) return true;else return false;(分数:15.00)_初级程序员下午试题-23 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】已知头指针分别为 La和 lb的有序单链表,其数据元素都是按值非递减排列。现要归并 La和 Lb得到单

    15、链表 Lc,使得 Lc中的元素按值非递减排列。程序流程图如下所示:(分数:15.00)_正确答案:(1)pa-data=pb-data (2)pc-next=pa (3)pc=pb(4)pb=pb-next (5)pc-next=pa?pa:pb)解析:分析本题考查程序流程图和有序链表的归并。题目要求我们归并头指针分别为 La和 Lb的有序单链表,组成一个新的有序单链表 Lc,而 Lc又是指向La的。首先,我们来了解一下单链表的结构。单链表中一般有两个域,一个是数据域,用来存放链表中的数据;另一个是指针域,用来存放指向下个结点的指针。其归并的过程应该是先比较链表 La和 Lb中第一个元素,将较

    16、小的从其链表中取出放到 k中,再取下一个结点的值去比较,重复这个过程,直到一个链表被全部取完,再将另一个链表剩下的部分连接到 Lc后面即可。下面,我们来看程序流程图的内容。首先是用两个指针变量 pa和 pb分别指向 La和 Lb的当前待比较插入的结点,而 pc指向 Lc表中当前最后一个结点。再下面是一个条件判断语句,其作用是判断链表 La和 Lb是否为空,如果有一个为空,只要将另一个链表剩下的部分连接到 Lc后面,程序应该就可以结束了。第(1)空是条件判断语句的条件,根据我们上面的分析,再结合流程图下面的内容,我们可以知道,这个条件语句的作用是比较当前待插入的两个值的大小,而指针变量 pa和

    17、pb分别指向 La和 Lb的当前待比较插入的结点,因此,此空的答案为 pa-data=pb-data。第(2)空是在条件为真的情况下执行的语句,如果条件判断为真,应该将 pa所指结点连接到 pc所指结点后面,因此,pc 所指结点的指针域应该存放 pa所指结点的地址。所以,此空的答案为 pc-next=pa。第(3)空和第(4)空都是在条件为假的情况下执行的语句,如果条件为假,说明 pb 所指结点的值小于 pa所指结点的值,应该将 pb所指结点连接到 pc所指结点后面,图中已经实现这一功能,要我们完成的是在插入后的后继工作。由于 pc指向的是 Lc表中当前最后一个结点,在插入一个结点后,要修改

    18、pc的值。在将 pb所指结点插入后,链表中的最后一个结点就是 pb所指结点,第(3)空的答案应该为 pc=pb。执行完这些功能后,指针 pb应该要往后移动,即指向下一个结点,第(4)用来完成这个功能,所以答案为pb=pb-next。在前面,我们已经讲到如果链表 La和 Lb有一个为空,只要将另一个链表剩下的部分连接到 Lc后面即可。第(5)空就是用来完成这个功能的,但我们不知道具体是哪个链表为空,还需要判断,因此,此空答案为pc-next=pa?pa:pb。二、试题二(总题数:1,分数:15.00)2.【程序 2.1说明】已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组

    19、中。【程序 2.1】#include stdioh#define N 100void main()float aN+l,x;int i,p;printf(“输入已经排好序的数列: “);for(i=0; iN; i+)scanf(%f“,printf(“输入要插入的数:“);scanf(“%f“,for(i=0,p=N; iN; i+)if(xai)(1) break;for(i=N-1; i=p; i-)(2) (3) for(i=0; i=N; i+)prinff(“%f/t“,ai);【程序 2.2说明】本程序用变量 count统计文件中字符的个数。【程序 2.2】#include st

    20、dio.h#include stdlib.hvoid main()FILE *fp;long count=0;if(fp=fopen(“letter.txt“,“r“)=NULL)printf(“can not open file/n“);exit(0);while(!feof(fp)(4) count+;printf(“count=%d/n“,count);(5) (分数:15.00)_正确答案:(1)p=i (2)ai+1=ai; (3)ap=x;(4)fgetc(fp); (5)fclose(fp);)解析:分析本题考查在 C语言中实现对数组的插入和对文件中字符个数的统计。我们先来看程序

    21、 2.1。题目要求在程序 2.1中实现在排好序的数组中插入一个数,但不能改变数组中数字排序的规律。由于数组是已经排好序的,它有可能是按不递减的方法排序,也有可能是按不递增的方法排序。在插入时,从数组中第一个数开始,逐个进行比较,直到找到比其大或相等的数,在其前面进行插入,在插入前应该先将数组中的元素逐个后移。下面我们来看代码。代码中有三个循环,第(1)空在第一个循环体下面的条件判断语句里,条件判断语句是判断要插入的数 J与数组中元素的大小,如果数 x小于数组中的元素,就执行第(1)空的语句。从上面的分析,再结合第二个循环语句的条件,我们可以知道,此空的作用是记录数要插入的位置,并把这个结果存放

    22、在变量 p中,所以,答案为 p=i。第(2)空所在的位置是第二个循环体下面,根据分析,要完成的任务应该是将数组中要插入位置后的元素逐个往后移动。所以,此空的答案为 ai+1=ai。在完成了上述两空之后,再结合整个程序来看,很明显还有一个功能没有完成,那就是插入数 x,第(3)空就是用于完成这个任务的。由于在代码的前面已经记录下了要插入的位置,所以,此空答案为 ap=x。在程序 2.2中,题目要求完成的任务是用变量 count统计文件中字符的个数,要实现对文件中字符个数的统计,首先需要我们判断出哪些是字符,这就涉及 C语言中对文件中字符的判定。此外,还需要我们掌握对文件的基本操作。下面,我们来看

    23、程序 2.2的代码。首先用一个条件判断语句来打开一个文件,如果打开成功,则执行下面的 while循环语句,循环体的功能是对文件中的内容逐个判断,如果是字符,则统计变量 count加 1,因此,第(4)空的功能就是要找出文件中的所有字符。这里没有条件判断语句来判段是否是字符,需要用到C语言中对文件处理的一个函数 fgetc(),其作用是可以取出文件中所有的字符,因此,此空答案为fgetc(fp)。第(5)空在代码的最后面,如果我们对文件操作很熟悉的话,不难发现文件在打开后还没有关闭,此空要实现的功能是关闭文件,因此,此空答案为 fclose(fp)。三、试题三(总题数:1,分数:15.00)3.

    24、【说明】Fibonacci数列 A=1,1,2,2,5,8,)有如下性质:a0=a1=1ai=ai-1+ai-2,i1对于给定的 n,另外有一个由 n个元素组成的数列 xn,该数列中各元素的值为:xi=ai/ai+1,i=0,1,n现要求对 xn中的元素按升序进行排序,然后以分数形式输出排序后的 xn。例如 n=5时,排序前的xn=1/1,1/2,2/3,3/5,5/8,排序后的 xn=1/2,3/5,5/8,2/3,1/1。程序中函数 make()首先生成排序前的xn,然后调用函数 sort()进行排序,最后输出所求结果。【程序】#include stdio.h#include stdlib

    25、.h#include malloc.hstruct factlong m,n;void sort(int n,struct fact *p)int a;long s,t,u,v;struct fact *q,*end;for(end=p+(n-1),a=1;a;end-)for(a=0,q=p;qend;p+)s=q-m;t=q-n;u=(q+1)-m;v=(q+1)-n;if( (1) )q-m=u;(2) (3) (q+1)-n=t;a=1;void make(int n)int i;long a,b,c;struct fact *x,*y;x=(struct fact *)malloc(

    26、sizeof(struct fact)*n);x-m=1:x-n=1;for(a=1,b=1,i=2;i=n;i+)(4) a=b;b=c;(x+(i-1)-m=a;(x+(i-1)-n=b;(5) printf(“x%d=%1d/%1d“,n,x-m,x-n);for(y=x+1;yx+n;y+)printf(“,%1d/%1d“,y-m,y-n);printf(“/n“);free(x);void main()int n;printf(“input n:“);scanf(“%d“,make(n);(分数:15.00)_正确答案:(1)s*v=t*u (2)q-n=v; (3)(q+1)-m

    27、=s;(4)c=a+b; (5)sort(n,x);)解析:分析本题考查在 C语言中实现对数列的排序。题目要求我们对 xn中的元素按升序进行排序,然后以分数形式输出排序后的 xn,程序中函数 make()用来生成排序前的 xn,而使用函数 sort()进行排序。在生成排序前的 xn以前,我们应该仔细理解题目中给出的生成规则。首先,我们来看函数 sort(),此函数的功能是排序。在函数体中我们可以看到它是用双重循环来实现对数列元素排序的,从整个函数我们可以分析出它排序的方法是从数列中找出一个最大的数存放到数列的最后面,在下次循环时,再从剩下的部分找出其最大的数存放到剩下部分的最后面,这样直到整个

    28、数列排好序。第(1)空是一个条件判断语句的条件,在第二重循环下面,根据上面的分析,该循环的作用是在数列中找出最大的数,那么,这个条件判断语句应该是判断相临两个数的大小,再结合程序中的内容,此空的答案应该是 s*v=t*u。第(2)空和第(3)空是条件判断语句结果为真的情况下执行的语句,如果条件为真,则说明前面的数要大于后面的数。而根据上面的分析,要将较大:的数放到后面位置,以方便下次和再后面的数比较,因此,这两个空的作用是要实现对两个数位置的交换,答案应该分别为 q-n=v 和(q+1)-m=s。接着,我们来看函数 make(),它的功能是用来生成排序前的 xn,在生成数列时,我们应该注意 F

    29、ibonacci数列的性质,它的每一项等于前两项的和。在函数体中,我们可以发现第一个循环体就是用来生成排序前的 zn的。第(4)空就在循环体内,我们仔细看代码,就可以发现变量 c没有初值,但后面又把变量 c的值赋给了变量 b,因此,第(4)空应该是给变量 c赋初值,但应该给它一个什么样的初值呢?结合 Fibonacci数列的性质 a i=ai-1+ai-2,我们很容易知道变量 c存放的就是 ai的值。因此,此空答案为 c=a+b。第(5)空是在循环体下面,上面我们已经说到,循环体生成了排序前的 xn,根据题目的要求,应该要调用函数 sort()进行排序了,因此,此空答案为 sort(n,x)。

    30、四、试题四(总题数:1,分数:15.00)4.【说明】本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:假定原文为 C1,C2,C3,,C n加密后形成的密文为 S1,S2,S3,,S n,首先读入正整数 key(key1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:(分数:15.00)_正确答案:(1)loopi.backward=(2)looplength-1.backward=(3)p-ch=*old+;(4)p=p-forward;(5)Newi=loopi.ch;)解析:分析本题考查加密算法在 C语言中的实现及双向循环链的生成。题目给出了具体加密算法的

    31、过程,要求函数 decode用于将原文 old加密并返回密文字符数组的首指针,并告诉我们函数采用一个双向循环链表 CODE来表示密文环。函数 strlen 用于计算一个字符串中的字符个数在程序中已经实现。下面,我们来看程序。根据题目给出的条件,我们知道函数 decode的基本功能和一些其他的性质。在函数 decode中,loop=(CODE*)malloc(length*sizeof(CODE)要求动态分配能存放 length个 CODE类型的内存空间,这说明分配了 length个 CODE链表结点的空间,并把其首地址存放到指针变量 loop中。但题目要求 CODE链表是双向循环链表,因此,还

    32、需要将这些结点连接起来使其成为双向循环链表。程序通过一个循环语句来对除首结点和尾结点外的其他结点的前后指针域赋值,使 forward指针域指向其后一个结点,使 backward指针域指向其前一个结点。因此第(1)空的答案出来了,是 loopi.backward=char *data;public:int get_length() return length;char *get_data() return data;string() delete data;int set data(int in_length, char *in_data);int set_data(char *data);vo

    33、id print() coutdataendl;class edit_string: public stringint cursor;public:int get_cursor() return cursor;void move_cursor(int dis) cursor=dis;int add_data(string *new_data);void delete_data(int num);int string:set_data(int in_length,char *in_data)length=in_length;if(!data)delete data;(1) strcpy(data

    34、,in_data);return length;int string:set data(char *in_data)(2) if(!data)delete data;(1) strcpy(data,in_data);return length;int edit_string:add_data(string *new_data)int n,k,m;char *cp,*pt;n=new_data-get_length();pt=new_data-get_data();cp=this-get_data();m=this-get_length();char *news=new charn+m+1;fo

    35、r(int i=0; icursor; i+)newsi=cpi;k=i;for(int j=0; jn; i+,j+)newsi=ptj;cursor=i;for(j=k; jm; j+,i+)(3) newsi=/0;(4) delete news;return cursor;void edit string:delete_data( int num)int m;char *cp;cp=this-get_data();m=this-get_length();for(int i=cursor; im; i+)(5) cpi=/0;(分数:15.00)_正确答案:(1)data=new cha

    36、rlength+1;(2)length=strlen(in_data);(3)newsi=cpj;(4)set_data(news);(5)cpi=cpi+num;)解析:分析本题考查 C+中字符串的操作。字符是程序设计中常用的一种数据类型,而字符串表示一串字符,在程序设计中扮演着重要角色,是考试中常出现的内容。题目要求设计一个基类能实现字符串设置、返回字符串长度及内容等功能,设计一个子类能支持在光标处的插入、删除操作。下面我们来看代码。首先定义了一个 string基类,在 string基类中,声明了两个成员变量和几个成员函数。接着定义了一个继承 string类的派生类 edit_string

    37、。再下面是对类中成员函数的实现。第(1)空在 set_data()函数体中,int string:set_data()表明此函数是基类中的成员函数,根据基类要实现的功能,此函数要实现返回字符串长度和设置其内容,在函数体中其长度已经给出,但分配存储空间被 delete data删除掉了,应该重新分配,在 C+中一般用关键字 new实现空间的动态分配。因此,第(1)空的答案是 data=new charlength+1。第(2)空在另一个 set_data()函数体中,这两个函数同名,但参数不同,这是 C+中用同名函数实现多态的技巧。此函数功能同上一个函数,但它的形参中没有指明字符串的长度,因此,

    38、在函数开始时要求出字符串的长度,用函数 strlen()。所以,此空答案为 length=strlen(in_data)。第(3)空和第(4)空在函数 add_data()中,此函数是派生类中的成员函数,根据题目要求它要实现的功能是在光标处进行插入。在此函数体中重新分配了一块内存空间,其长度是原有字符串长度和要插入字符串长度之和加 1,用来存放这两个字符串。第(3)空所在的位置是循环体下面,根据循环体的判断条件 im我们可以想到这是要对长度为 m的字符串进行插入。因此,此空答案为 newsi=cpj。而第(4)空是在完成了插入工作以后,根据程序上下文推断,应该是计算字符长度并返回,因此,答案为

    39、 Set_data(news)。第(5)空在函数 delete_data()中,根据题目要求,此函数应该是实现子类在光标处进行删除的功能。删除一般采用覆盖技术,即将后面的字符往前移动来覆盖掉要删除的字符,第(5)空实现的就是这个功能,要删除 num个字符,后面的字符应该往前移动 num,因此,此空答案为 cpi=cpi+num。六、试题六(总题数:1,分数:15.00)6.【说明】IC卡和 200卡都是从电话卡派生的。下面的程序将电话卡定义为抽象类。其中 balance 为双精度变量,代表电话卡中的余额;cardNumber 是长整型变量,代表电话卡的卡号;password 是整型变量,代表电

    40、话卡的密码;connectNumber 是字符串变量,代表电话卡的接入号码;connected 是布尔变量,代表电话是否接通。performDial()实现各种电话接通后的扣除费用的操作。其中 200卡每次通话扣除 0.5元的通话费用和附加费用;IC 卡每次通话扣除 0.9元的通话费。TimeLeft()方法用于测试电话卡余额还可以拨打电话的次数。performConnection()用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。【程序】abstract class PhoneCarddoubte balace;(1) perfermDial();double getBalanc

    41、e()return balance; double TimeLeft()double current=balance;int times=0;do(2) times+;white(balance=0);balance=current;return times-1;abstract class Number_PhoneCard extends PhoneCardlong cardNumber:int password;String connectNumber;Boolean connected;Boolean performConnection(long cn, int pw)if(cn=car

    42、dNumber return true;else return false;class IC Card (4) boolean performDial()if(balance0.9)balance-=0.9;return true;else return false;class D200_Card (4) static double additoryFee;static additoryFee=0.1; boolean performDial()if(balance(0,5+additeryFee)(5) return true;else return false;(分数:15.00)_正确答

    43、案:(1)abstract Boolean(2)performDial();(3)pw=password(4)extends Number_PhoneCard(5)balance-=0.5+additoryFee;)解析:分析本题考查 Java对抽象类的定义、继承及电话卡业务的实现。在 Java程序设计语言中,抽象类是指在类中定义了抽象成员函数的类,程序中把基类 PhoneCard定义为抽象类,其中有一个成员变量和三个成员函数,但是已给出定义的两个函数都不是抽象成员函数。因此,第(1)空的作用是把成员函数 performDial0定义为抽象成员函数,结合后面的程序我们可以知道,函数perfor

    44、mDial()的返回类型是布尔型,因此,此空的答案为 abstract Boolean。第(2)空在函数 TimeLeft()中,此函数用于测试电话卡余额还可以拨打电话的次数,要实现此功能应该知道每次电话接通后扣除的费用,函数 performDial()能实现这个功能,此处应该是调用这个函数,因此,此空答案为 performDial()。第(3)空在函数 performConnection()中,此函数用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。结合程序中代码,我们知道此空是要判断密码是否正确,而参数 pw中存放的是密码,因此,此空答案为 pw=password。第(4)空是在派生类的定义时,对派生类继承关系的说明。电话卡的所有属性在抽象类 Number_PhoneCard中都有了完整的定义,那么这两个电话卡的派生类应该继承 Number_PhoneCard 抽象类,因此,此空答案为 extends Number_PhoneCard。第(5)空在 D200_Card类的 performDial()函数中,这个函数的作用是对 200卡每次通话进行扣费操作。根据题目条件,200 卡每次通话扣除 0.5元,再结合程序中的内容,我们可以推导出第(5)空要完成的任务是费用扣除操作,因此,此空答案为 balance-=0.5+additoryFee。


    注意事项

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




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

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

    收起
    展开