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

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

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

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

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

    1、初级程序员下午试题-88 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【流程图】(分数:15.00)填空项 1:_二、试题二(总题数:1,分数:15.00)2.【说明】程序 8 用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额,职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于 0 结束。假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额 800 元后的余额作

    2、为该月的月应纳税所得额。适用税率如表 2 所示。表 2级数 月应纳税所得额 适用税率 (%)123456789不超过 500 元的部分501 元2000 元的部分2001 元5000 元的部分5001 元2000 元的部分2001 元4000 元的部分4001 元6000 元的部分6001 元8000 元的部分8001 元100000 元的部分超过 100000 元的部分 51015202530354045上表表明,个人收入所得税是按照超额累进的税率来征收的。设一个人的月应纳税所得额为 K(元),用下面的公式计算其应缴纳的个人所得税额 S (元);若 0K500,则 S=K5%;若 500K2

    3、000,则 S=5005%+(K-500)10%;若 2000K5000,则 S=5005%+150010%+(K-2000)15%;若 5000K20000,则 S=5005%+150010%+300015%+(K-5000)20%; .例如,某人某月收入总额为 4100 元,减去 800 元后,应纳税所得额为 3300 元,其应缴纳的个人所得税额为 500*5%+1500*10%+1300*15%=370 元。【程序】#includestdio.h#define MaxNum 50#define BASE 800 /*免税金额基数*/int paylevel=0,500,2000,5000

    4、,20000,40000,60000,80000,100000,1000001;int taxPrate=5,10,15,20,25,30,35,40,45; /*税率表*/typedef structint ld; /*职工的工号*/long Salary; /*职工的工资*/Info;/*查找工号为 ld 的职工在数组 employee 中的下标,返回值为 0 表示没有*/int find (int ld ,Info employee, int m) int j;employee0. Id=Id;for(j=m; (1) ;j-);return j;void main(void)Info

    5、employeeMaxNum+1;long Wage;double sum=0, K,S;int i,j,N=0,Code;scanf(“%d %Id“,while(Code0)i=find (Code, empolyee, N );if(i0)employee i. Salary+=Wage;else (2) ;employeeN. Id=Code;employeeN. Salary =Wage;scanf(“%d %Id“, for(i=1;i=N;i+) K= (3) ; /*计算月应纳税所得额*/S=0; /*月应纳税额赋初值*/if(K0) for(j=1;j9;j+)if (4)

    6、/*月应纳税所得额超过第 j 级*/S=S+(paylevelj-paylevelj-1)*taxPratej-1/100;elseS =S+ (5) * taxPratej-1/100; break; printf(“职工%d 应缴纳的个人所得税额:%10.21f/n“,employeei.Id,S);sum+=S;printf(“全体职工个人所得税总额:%10.21f/n“,sum);(分数:15.00)填空项 1:_三、试题三(总题数:1,分数:15.00)3.【说明】下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的 ASC

    7、II 值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上例如:位置:0 1 2 3 4 5 6 7源字符串:h g f e a b c d则处理后字符串:d c b a h g f e函数 ReadDat()实现从文件 in.dat 中读取数据(每行字符串长度均小于 80),函数 WriteDat()把结果 dat输出到文件 out.dat 中。#includestdio.h#includesiring.h #includeconio.hchar dat20 80;void jsSort()int i,j,k,strl;char

    8、ch;for(i=0;i20;i+)strl=strlen(datei);for(j= (1) ;jstrl;j+) /*对后半部分的字符串进行排序*/for(k=j+1;kstrl;k+)if( (2) )ch=dati j;doti j=dati k;dati k=ch;for(j=0; (3) j+) /*前后两部分进行交换*/ch = date i j;dote i j = date i (strl+1)/2+j;dat i (strl+1)/2+j=ch;void main()reodDat();isSort();writeDot();readDat ()FILE * in;int

    9、i=0;char * p;(4) ;while(i20 if(p) *p=0;i+;fclose (in);writeDat()FILE * out;int i;clrscr ();out = fopen(“out. dat“ ,“W“);for(i=0;i20;i+)printf(“%s/n“,dari);printf ( (5) );fclose (out);(分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)4.【说明 4.1】 假设两个队列共享一个循环向量空间(如图 1-2 所示),其类型 Queue2 定义如下:typedef struct DateType

    10、data MaxSize;int front2,rear2;Queue2;对于 i=0 或 1,fronti和 reari分别为第 i 个队列的头指针和尾指针。函数EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第 i 个队列的入队操作。【函数 4.1】 int EnQueue(Queue2 * Q, int i, DateType x)/*若第 i 个队列不满,则元素 x 入队列,并返回 1;否则,返回 0*/if(i0i1) return 0;if(Q-reari=Q-front (1) return 0;Q-data (2) =x;Q-reari= (3

    11、) ;return 1;【说明 4.2】函数 BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回 1,否则返回 0。函数中参数 T1 和 T2 分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。已知二叉树中的结点类型 BinTreeNode 定义为:struct BinTreeNode char data;BinTreeNode * left, * right;其中 dau 为结点值域,leR 和 risht 分别为指向左、右子女结点的指针域,【函数 4.2】in

    12、t BTreeEqual(BinTreeNode * T1, BinTreeNode * T2)if(Ti = NULL /*若一棵为空一棵不为空,则不等*/else if( (5) ) return 1; /*若根结点值相等并且左、右子树*/*也相等,则两棵树相等,否则不等*/else return 0; (分数:15.00)填空项 1:_五、试题五(总题数:1,分数:15.00)5.1】【应用说明 5.1】本应用程序的窗体中有一个下拉式列表框(名称为 Combo1)和两个文本框(名称分别为 Txt1 和 Txt2)。运行时,用户从 Combo1 的列表中进行选择,程序就会将选中条目的内容以

    13、及编号(从 0 开始)分别在文本框Txt1 和 Txt2 中显示出来。【程序代码 5.1】Private Sub Combo1_Click()Txt1.Text = Combo1. (1) Txt2.Text = Combo1. (2) End Sub(注:可供(2)处选择的选项:List, Index, Listlndex, ListCount, Number)【应用说明 5.2】本应用程序的运行窗口如图 2 所示。(分数:15.00)填空项 1:_六、试题六(总题数:1,分数:15.00)6.【说明】下面程序的功能是显示已定义的一个 3 行 3 列的二维数组每行的元素,并求所有元素的和并输

    14、出。请在程序的每条横线处填写一个适当的语句,使程序的功能完整。public class Arrayt(1) static (2) main(String args)int sum=0;int = t 11,12,13, 21,22,23,31,32,33;for(int i=0; (3) i+)System. out. print(“b“+i+“:“);for(int j=0; (4) j+)System. out. print(bi j +“ “);(5) System. out. println ();System. out. println(“sum=“+sum);(分数:15.00)填

    15、空项 1:_七、试题七(总题数:1,分数:15.00)7.【说明】某学校举办了一场奥运知识竞赛,参加竞赛的选手为 200 名,1200 为选手编号。竞赛时间为9:0011:00。8 道竞赛题目依次从“A”“H”编号,选手可按任意次序答题,每完成一道题目,可立即提交答案。若答案正确(Y),则选择其他题目进行解答,否则,可继续做该题目或选择其他题目进行解答,直至竞赛结束。选手提交答案的情况及判定结果由专人即时录入,录入数据包括提交答案的时间、选手编号、题目编号(AH)、是否正确(Y/N)等。对竞赛情况进行统计和排名的规则如下:1若选手 X 在竞赛时提交的题目 P 解答正确,则解答该题目所用时间计算

    16、如下:解答题目 P 的用时=提交题目 P 正确的时间-竞赛的开始时间+罚时,罚时=提交题目 P 错误解答的次数20例如:表 1 中 14 号选手在 10:27 提交了题目 A 的正确解答,因此该选手正确解答该题目所用时间 P 为 87分钟,由于他在 09:37 和 09:52 两次提交了题目 A 的错误解答,因此罚时为(220)分钟=40 分钟,所以14 号选手解答题目 A 的用时=(87+ 40)分钟:127 分钟。2已经提交正确答案的题目再次提交时不再计算。3竞赛结束时,选手的总用时为所有解答正确的题目用时累加所得,解答不正确的题目不计时。4排名时,完成题目数量多者排名靠前;若完成的题目数

    17、相同,则用时少者排名靠前;若完成的题目数和所用时间均相等,则名次相同;完成题目数为。的选手不参加排名。本应用程序的运行窗口如图 3 所示。(分数:15.00)填空项 1:_八、试题八(总题数:1,分数:15.00)8.【说明】设计一个日期类 Date 包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。在 Date 类中设计如下重载运算符函数:Date operator + (int days) : 返回某日期加上天数得到的日期。Date operator - (int days) : 返回某日期减去天数得到的日期。int operato

    18、r - (Date/day_tab 二维数组存放各月天数,第一行对应非闰年,第二行对应闰年 class Dateint year, month, day /年,月,日int leap(int); /判断是否闰年int dton(Date month = m; day = d;void setday(intd)day = d;void setmonth(int m) month = m;void setyear(int y) year =y;int getday() return day;int getmonth() return month:int getyear() return yea;D

    19、ate operator + (int days) /+运算符重载函数static Date date;int number = (1) date = ntod(number)return dateDate operator - (int days) /-运算符重载函数staffs Date date;int number= (2) ; number - = days;date = ntod(number)return date;int operator - (Date return days;void disp()coutyear“.“month“. “dayendl;int Date: :

    20、leap( int year)if( (4) ) /是闰年return 1; /不是闰年elsereturn0:int Date: dton( Date for(y=1;y=d. year;y+)if( (5) )days+ =366; /闰年时加 366 天else days + = 365; /非闰年时加 365 天for(m =0;md. month-1;m+)if( (6) )days += day_tab1 m;elsedays +=day_tab0 m;days + = d. day;return days;Date Date:ntod(intn) /将从元 0 年 0 月 0 日

    21、的天数转换成日期int y=1,m = 1,d,rest = n,lp;while(1)if(leap(y)if(rest= 366) break;else rest - = 366;else /非闰年if(rest = 365 ) break;else rest-=365;y+;y-;Ip = leap(y);while(1)if(lp) /闰年if(restday_tab1 m - 1) rest -= day_tab1 m-1;else break;else /非闰if(restday_tab0 m -1) rest -= day_tab0 m-1;else break;m+;d = r

    22、est;return Date(y;m,d);void main()Date now(2003,10,1) ,then(2005,6,5);cout“ now:“;now. disp();cout“ then:“;then. disp();cout“相差天数:“(then-now)endl;Date dl = now + 1000,d2 = now - 1000;cout“now + 1000:“ ;d1. disp();cout“ now - 1000:“ :d2. disp();(分数:15.00)填空项 1:_初级程序员下午试题-88 答案解析(总分:120.00,做题时间:90 分钟)

    23、一、试题一(总题数:1,分数:15.00)1.【流程图】(分数:15.00)填空项 1:_ (正确答案:i: 1, 1, 16 (2)1-sw (3)0BITi(4) NOP,或空操作 (5)1-BITi)解析:解析 该流程图的功能在说明中已经解释了,要解该题关键要搞清楚流程图中引用的变量 sw 的含义。通过阅读流程图的说明和流程图可知,变量 sw 主要用来定义是否已经找到某一位是“1”:当 sw=0时,说明到目前为止还没有哪一位是“1”,不需要对该位求反;当 sw=1 时,说明已经有一位是“1”,需要对该位求反。先来看(1)空。(1)空是要写出循环变量名、循环初值、增量和循环终值,该题要从遍

    24、历整型数组 BIT 的所有元素,从 BIT1开始到 BIT 16结束,再看流程图的第 1 个判断用的变量是 i,这样就可判断循环变量名为 i,循环初值为 1,增量为 1,循环终值为 16。这样(1)空的答案为“i:1,1,6”。在这个循环中,当第 i 位是 1 时,即 BIT(i)=1,进入左分支。这时需要判断 sw 值,若 sw=0,需要将 sw置为 1;“若 sw=1,需要对将 BIT(i)置为 0。这样(2)空的答案为“1-sw”;(3)空的答案为“0-BITi”。同样,当第 i 位是。时,即 BIT(i)=0,进入右分支。这时需要判断 sw 值,若 sw=0,将不作任何操作;若 sw=

    25、1,需要对将 BIT(i)置为 1。这样(4)空的答案为“NOP”;(5)空的答案为“1-BITi”。二、试题二(总题数:1,分数:15.00)2.【说明】程序 8 用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额,职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于 0 结束。假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额 800 元后的余额作为该月的月应纳税所得额。适用税率如表 2 所示。表 2级数 月应纳税

    26、所得额 适用税率 (%)123456789不超过 500 元的部分501 元2000 元的部分2001 元5000 元的部分5001 元2000 元的部分2001 元4000 元的部分4001 元6000 元的部分6001 元8000 元的部分8001 元100000 元的部分超过 100000 元的部分 51015202530354045上表表明,个人收入所得税是按照超额累进的税率来征收的。设一个人的月应纳税所得额为 K(元),用下面的公式计算其应缴纳的个人所得税额 S (元);若 0K500,则 S=K5%;若 500K2000,则 S=5005%+(K-500)10%;若 2000K50

    27、00,则 S=5005%+150010%+(K-2000)15%;若 5000K20000,则 S=5005%+150010%+300015%+(K-5000)20%; .例如,某人某月收入总额为 4100 元,减去 800 元后,应纳税所得额为 3300 元,其应缴纳的个人所得税额为 500*5%+1500*10%+1300*15%=370 元。【程序】#includestdio.h#define MaxNum 50#define BASE 800 /*免税金额基数*/int paylevel=0,500,2000,5000,20000,40000,60000,80000,100000,10

    28、00001;int taxPrate=5,10,15,20,25,30,35,40,45; /*税率表*/typedef structint ld; /*职工的工号*/long Salary; /*职工的工资*/Info;/*查找工号为 ld 的职工在数组 employee 中的下标,返回值为 0 表示没有*/int find (int ld ,Info employee, int m) int j;employee0. Id=Id;for(j=m; (1) ;j-);return j;void main(void)Info employeeMaxNum+1;long Wage;double

    29、sum=0, K,S;int i,j,N=0,Code;scanf(“%d %Id“,while(Code0)i=find (Code, empolyee, N );if(i0)employee i. Salary+=Wage;else (2) ;employeeN. Id=Code;employeeN. Salary =Wage;scanf(“%d %Id“, for(i=1;i=N;i+) K= (3) ; /*计算月应纳税所得额*/S=0; /*月应纳税额赋初值*/if(K0) for(j=1;j9;j+)if (4) /*月应纳税所得额超过第 j 级*/S=S+(paylevelj-p

    30、aylevelj-1)*taxPratej-1/100;elseS =S+ (5) * taxPratej-1/100; break; printf(“职工%d 应缴纳的个人所得税额:%10.21f/n“,employeei.Id,S);sum+=S;printf(“全体职工个人所得税总额:%10.21f/n“,sum);(分数:15.00)填空项 1:_ (正确答案:employeej.Id!=Id (2) +N 或 N+或 N=N+1(3) employee i. Salary-BASE(4) Kpaylevelj (5)K-paylevelj-1)解析:解析 (1)find 函数的功能是

    31、找到了号为 Id 的职工在数组 employee 中的下标。显然,循环进行下去的条件是 employeejId!=Id。 (2)当 i=0 时,表明该职工的信息是第一次录入,所以应当在数组employee 中创建一个新元素,于是此处应填入 N+或其他等价表达式。 (3)K 表示该月应纳的所得税额,所以应填入 employeei.SalaryBASE。(4)此处是判断当前职工的工资是否超过第 j 级,所以应填入 Kpaylevelj)。(5)当前职工的工资不超过第 j 级,应当计算它与第 j-1 级的差额的所得税,所以应填入 K-paylevelj-1。三、试题三(总题数:1,分数:15.00)

    32、3.【说明】下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的 ASCII 值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上例如:位置:0 1 2 3 4 5 6 7源字符串:h g f e a b c d则处理后字符串:d c b a h g f e函数 ReadDat()实现从文件 in.dat 中读取数据(每行字符串长度均小于 80),函数 WriteDat()把结果 dat输出到文件 out.dat 中。#includestdio.h#includesirin

    33、g.h #includeconio.hchar dat20 80;void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+)strl=strlen(datei);for(j= (1) ;jstrl;j+) /*对后半部分的字符串进行排序*/for(k=j+1;kstrl;k+)if( (2) )ch=dati j;doti j=dati k;dati k=ch;for(j=0; (3) j+) /*前后两部分进行交换*/ch = date i j;dote i j = date i (strl+1)/2+j;dat i (strl+1)/2+j=ch

    34、;void main()reodDat();isSort();writeDot();readDat ()FILE * in;int i=0;char * p;(4) ;while(i20 if(p) *p=0;i+;fclose (in);writeDat()FILE * out;int i;clrscr ();out = fopen(“out. dat“ ,“W“);for(i=0;i20;i+)printf(“%s/n“,dari);printf ( (5) );fclose (out);(分数:15.00)填空项 1:_ (正确答案:(strl+1)/2 (2)datijdatik(3)

    35、jstrl/2 (4)in=fopen(“in. dat“,“r“)(5)out,“% s/n“,dati)解析:解析 程序的思路是:先调用函数 ReadDat()从文件 in.dat 中读取 20 行数据存放到字符中数组dat 中,然后调用函数 jsSort()对字符串数组 dar 按照排序规则进行排序,排序后的结果仍按行重新存入字符串数组 dat 中,最后调用函数 WriteDat()把结果 dat 输出到文件 out.dat 中。(1)、(2)空所在的两重循环是对一行字符串的后半部分按字符的 ASCII 值降序排序,这是一个简单的冒泡排序。考虑到如果原字符串长度为奇数,则最中间的字符不参

    36、加排序,因此应从第(strl+1)/2 个元素开始排序,这就是(1)空所填的内容。由于是按字符的 ASCII 值降序排序,因此当 datijdatik时就要进行数据交换,这就是 (2)空所填的内容。(3)空所在的循环是进行前后两部分数据交换,因此,结束条件应为 strl/2,因此空(3)应填“jstrl/2”。(4)空所在函数是读取数据函数。在读取数据前先要以只读方式打开数据文件 in.dat,因此空(4)处应填写“in=fopen(“in.dat“,“r“)”。(5)空所在函数是写入排序结果函数。在(5)空所在行是把 dati一行写入到 out.dat 中,应此(5)空处应填写“out,“%

    37、“s/n“,dati”。四、试题四(总题数:1,分数:15.00)4.【说明 4.1】 假设两个队列共享一个循环向量空间(如图 1-2 所示),其类型 Queue2 定义如下:typedef struct DateType data MaxSize;int front2,rear2;Queue2;对于 i=0 或 1,fronti和 reari分别为第 i 个队列的头指针和尾指针。函数EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第 i 个队列的入队操作。【函数 4.1】 int EnQueue(Queue2 * Q, int i, DateType x)/

    38、*若第 i 个队列不满,则元素 x 入队列,并返回 1;否则,返回 0*/if(i0i1) return 0;if(Q-reari=Q-front (1) return 0;Q-data (2) =x;Q-reari= (3) ;return 1;【说明 4.2】函数 BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回 1,否则返回 0。函数中参数 T1 和 T2 分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。已知二叉树中的结点类型 BinTreeNode 定

    39、义为:struct BinTreeNode char data;BinTreeNode * left, * right;其中 dau 为结点值域,leR 和 risht 分别为指向左、右子女结点的指针域,【函数 4.2】int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2)if(Ti = NULL /*若一棵为空一棵不为空,则不等*/else if( (5) ) return 1; /*若根结点值相等并且左、右子树*/*也相等,则两棵树相等,否则不等*/else return 0; (分数:15.00)填空项 1:_ (正确答案:(i+1)%2(或

    40、 1-i) (2)Q-reari(3)(Q-reari+)%Maxsize(4)T1=NULLT2=NULL (5)T1-data=T2- data int = t 11,12,13, 21,22,23,31,32,33;for(int i=0; (3) i+)System. out. print(“b“+i+“:“);for(int j=0; (4) j+)System. out. print(bi j +“ “);(5) System. out. println ();System. out. println(“sum=“+sum);(分数:15.00)填空项 1:_ (正确答案:publ

    41、ic (2)void (3)i3;或等价形式(4)j3;或等价形式 (5)sum+bij;或等价形式)解析:解析 (1)空为 Java 主函数的修饰符,是固定写法。(2)空 Java 主函数不需要返回值,这也是固定写法。(3)空数组共有 3 行,所以循环 3 次。(4)空数组共有 3 列,所以循环 3 次。(5)空是将 bij累加到 sum 中。七、试题七(总题数:1,分数:15.00)7.【说明】某学校举办了一场奥运知识竞赛,参加竞赛的选手为 200 名,1200 为选手编号。竞赛时间为9:0011:00。8 道竞赛题目依次从“A”“H”编号,选手可按任意次序答题,每完成一道题目,可立即提交

    42、答案。若答案正确(Y),则选择其他题目进行解答,否则,可继续做该题目或选择其他题目进行解答,直至竞赛结束。选手提交答案的情况及判定结果由专人即时录入,录入数据包括提交答案的时间、选手编号、题目编号(AH)、是否正确(Y/N)等。对竞赛情况进行统计和排名的规则如下:1若选手 X 在竞赛时提交的题目 P 解答正确,则解答该题目所用时间计算如下:解答题目 P 的用时=提交题目 P 正确的时间-竞赛的开始时间+罚时,罚时=提交题目 P 错误解答的次数20例如:表 1 中 14 号选手在 10:27 提交了题目 A 的正确解答,因此该选手正确解答该题目所用时间 P 为 87分钟,由于他在 09:37 和

    43、 09:52 两次提交了题目 A 的错误解答,因此罚时为(220)分钟=40 分钟,所以14 号选手解答题目 A 的用时=(87+ 40)分钟:127 分钟。2已经提交正确答案的题目再次提交时不再计算。3竞赛结束时,选手的总用时为所有解答正确的题目用时累加所得,解答不正确的题目不计时。4排名时,完成题目数量多者排名靠前;若完成的题目数相同,则用时少者排名靠前;若完成的题目数和所用时间均相等,则名次相同;完成题目数为。的选手不参加排名。本应用程序的运行窗口如图 3 所示。(分数:15.00)填空项 1:_ (正确答案:Asc(“A“)+i-1,或 64+i,及其等价形式(2)(h-9) * 60

    44、+m,及其等价形式(3)Combol.Text (4)Value (5)time+R(k).d(m)*20其中 m 可表示为 Asc(ch)-Asc(“A“)或 Asc(ch)-65,k 可表示为 R(R(k).no))解析:解析 (1)空是为组合列表框 Combol 提供题目编号(AH),因此填入 Asc(“A“)+i-1,或 64+i,及其等价形式,在 Cmd_confirm_Click 过程中,变量 11 用来表示提交题目时间的小时部分,m 用来表示提交题目时间的分钟部分,因此(2)空即答题时间转换成分钟后,应是(h-9)*60+m。题目编号是组合列表框 Combol 的当前文本,即(3

    45、)空填入 Combol.Text。变量 pass 用来表示答题是否正确,如果检查框 Chk_yn 未选中,则否(N),否则是(Y),检查框 Chk_yn 是否选择,由检查框 Chk_yn 的属性 Value 决定,因此空(4)填入 Value。根据题意:解答题目 P 的用时:正确答题时间+罚时(提交题目 P 错误解答的次数*20),而答题时间由变量time 表示,提交题目 P 错误解答的次数由记录分量 d(m)表示,因此,完成题目的总用时(5)空)是time+R(k).d(m)*20。八、试题八(总题数:1,分数:15.00)8.【说明】设计一个日期类 Date 包括年、月、日等私有数据成员。

    46、要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。在 Date 类中设计如下重载运算符函数:Date operator + (int days) : 返回某日期加上天数得到的日期。Date operator - (int days) : 返回某日期减去天数得到的日期。int operator - (Date/day_tab 二维数组存放各月天数,第一行对应非闰年,第二行对应闰年 class Dateint year, month, day /年,月,日int leap(int); /判断是否闰年int dton(Date month = m; day = d;voi

    47、d setday(intd)day = d;void setmonth(int m) month = m;void setyear(int y) year =y;int getday() return day;int getmonth() return month:int getyear() return yea;Date operator + (int days) /+运算符重载函数static Date date;int number = (1) date = ntod(number)return dateDate operator - (int days) /-运算符重载函数staffs Date date;int number= (2) ; number - = days;date = ntod(number)return date;int operator - (Date return days;void disp()couty


    注意事项

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




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

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

    收起
    展开