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

    【计算机类职业资格】计算机水平考试初级程序员2013年上半年下午真题及答案解析.doc

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

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

    【计算机类职业资格】计算机水平考试初级程序员2013年上半年下午真题及答案解析.doc

    1、计算机水平考试初级程序员 2013 年上半年下午真题及答案解析(总分:90.00,做题时间:150 分钟)一、必答题(共 4 道大题,每道大题 15 分)(总题数:4,分数:60.00)1.阅读以下说明和流程图,填补流程图中的空缺(1)(5),将解答填入答题纸的对应栏内。 【说明】 平面上一个封闭区域内稳定的温度函数式一个调和函数,如果区域边界上各点的温度是已知的(非常数),那么就可以用数值方法近似地计算出区域内各点的温度(非负数)。 假设封闭区域是矩形,可将整个矩形用许多横竖线切分成比较细小的网格,并以最简单的方式建立坐标系统,从而可以将问题描述为:已知调和函数 u(i,j)在矩形0im;0

    2、jn)四边上的值,求函数 u 在矩形内部各个网格点i=1,m=1;j=1,n=1上的近似值。 根据调和函数的特点可以推导出近似算式:该矩形内任一网格点上的函数值等于其上下左右四个相邻网格点上函数值的算术平均值。这样,我们就可以用迭代法来进行数值计算了。首先将该矩形内各网格点上的函数值设置为一个常数,例如 u(0,0);然后通过该迭代式计算矩形内个网格点上的新值。这样反复进行迭代计算,若某次迭代后所有的新值与原值之差别都小于预定的要求(例如 001),则结束求解过程。 【流程图】 (分数:15.00)_2.阅读以下说明和 C 函数,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数G

    3、etDateld(DATE date)的功能是计算并返回指定合法日期 date 是其所在年份的第几天。例如,date 表示2008 年 1 月 25 日时,函数的返回值为 25,date 表示 2008 年 3 月 3 日时,函数返回值为 63。 函数Kday_Date(int theyear,int k)的功能是计算并返回指定合法年份 theyear(theyear1900)的第 k 天(1k365)所对应的日期。例如,2008 年的第 60 天是 2008 年 2 月 29 日,2009 年的第 60 天是 2009 年3 月 1 日。 函数 isLeapYear(int y)的功能是判断

    4、 Y 代表的年份是否为闰年,是则返回 1,否则返回 0。 DATE 类型定义如下: typedef struct int year,month,day; DATE; 【C 函数 1】 int GetDateId(DATE date) Const int days_month13=0,31,28,31,30,31,30,31,31,30,31,30,31; int i,date_id=dateday; for(i=0;i=1&k=1900);*不满足断言时程序终止* dateyear=_(4)_; if(isLeapYear(dateyear)days_month2+; for(i=1;) k=

    5、kdays_monthi+; if(k0)的下标 i 对应自然数 i,sievei的值为 10 分别表示 i 在不在序列中,也就是将 i 划去(去掉)时,就将 sievei设置为 0。 【C 程序】 #includestdioh #define N 10000 int main() char sieveN+1=0); int i=0,k; *初始时 2N 都放入 sieve 数组* for(i=2;_(1)_;i+) sievei=1; for(k=2;) *找出剩下的数中最小者并用 K 表示* for(;kN+1&sievek=0;_(2)_); if(_(3)_)break; print(

    6、“dt”,k);*输出素数* *从 sieve 中去掉 k 及其倍数* for(i=k;iN+1;i=_(4)_) _(5)_; return 0; / *end of main* /(分数:15.00)_4.阅读以下说明和 C 程序,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 N 个游戏者围成一圈,从 1N 顺序编号,游戏方式如下;从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。 下面的函数 playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N 个人同成的圈用一个包含 N 个结

    7、点的单循环链表来表示,如图 41 所示,游戏者的编号放在结点的数据域中。 在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量 c(初值为 1)用于计数,指针变量 P 的初始值为 head,如图 4 一 1 所示。游戏时,从 P 所指向的结点开始计数,P 沿链表中的指针方向遍历结点,c 的值随 P 的移动相应地递增。当 c 计数到 2 时,就删除 P 所指结点的下一个结点(因下一个结点就表示报数到 3 的游戏者),如图 42 所示,然后将 C 设置为0 后继续游戏过程。 (分数:15.00)_二、选答题(总题数:2,分数:30.00)5.阅读下列说明和 C+代码,填充代码中的空缺,将解答填

    8、入答题纸的对应栏内。 【说明】 某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即 GPA=Wg+Ag。 设一个学生共修了 n 门课程,则其加权平均成绩(Wg)定义如下: 其中,gradei、Ci分别表示该学生第 i 门课程的百分制成绩及学分。 学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加 m 项学科竞赛): 其中,li 和 Si 分别表示学生所参加学科竞赛的级别和成绩。 对于社会活动和学科竞赛都不参

    9、加的学生,其附加分按活动分为 0 计算。 下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类 Student 描述,包括学号(stuNo)、姓名(name)、课程成绩学分(grades)和综合成绩(GPA)等,参加社会活动的学生由类 ActStudent 描述,其活动分由 Apoints 表示,参加学科竞赛的学生由类 CmpStudent 描述,其各项竞赛的成绩信息由 awards 表示。 【C+代码】 #include #include using namespace std; const int n=5; *课程数* const int m=2; *竞赛项目数* class

    10、Student protected: int stuNo;string name; double GPA; *综合成绩* int(*grades)2; *各门课程成绩和学分* public: Student(const int stuNo,const string&name,int grades2) this-stuNo=stuNo;this-name=name;this-grades=grades; VirtualStudent() int getstuNo()*实现略* string getName()*实现略* _(1)_; double computeWg() int totalGra

    11、des=0,totalCredits=0: for(int i=0;iN;i+) totalGrades+=gradesi0*gradesi1;totalGredits+=gradesi1; return GPA=(double)totalGradestotalCredits; ;class ActStudent;public Student int Apoints; public; ActStudent(const int stuNo,const string&name,int gs2,int Apoints) :_(2)_ this-Apoints=Apoints: double getG

    12、PA()return GPA=_(3)_; ; class CmpStudent:public Student private: int(*awards)2; public: cmpstudent(const int stuNo,const string&name,int gs2,int awards2) :_(4)_ this-award=award; double getGPA()f int Awards=0; for(int i=0;iM;i+) Awards+=awardsi0*awardsi1: Return GPA=_(5)_; ; int main() 以计算 3 个学生的综合成

    13、绩为例进行测试 int g12=80,3,90,2,95,3,85,4,86,3, g22=60,3,60,2),60,3,60,4,65,3, g32=80,3,(90,2,70,3,65,4,75,3; 课程成绩 int c32=2,3,3,3); 竞赛成绩 Student*student3= new ActStudent(101,”John”,g1,3), 3 为活动分 new ActStudent(102,”Zhang”,g2,0), new ActStudent(103,”Li”,g3,c3), ; 输出每个学生的综合成绩 for(int i=0;i_6.阅读以下说明和 Java 程

    14、序,填充代码中的空缺,将解答填入答题纸的对应档内。 【说明】 某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即 GPA=Wg+Ag。 设一个学生共修了 n 门课程,则其加权平均成绩(Wg)定义如下: 其中,gradei、Ci 分别表示该学生第 i 门课程的百分制成绩及学分。 学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加 m 项学科竞赛): 其中,li 和 Si 分别表示学生所参加学科竞赛的级别和成绩

    15、。 对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为 0 计算。 下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类 Student 描述,包括学号(stuNo)、姓名(name)、课程成绩学分(grades)和综合成绩(GPA)等,参加社会活动的学生由类 ActStudent 描述,其活动分由 Apoints 表示,参加学科竞赛的学生由类 CmpStudent 描述,其各项竞赛的成绩信息由 awards 表示。 Java 代码】 abstract class Student protected String name; protected int stuNo; prot

    16、ected double GPA; *综合成绩* protected intgrades; *各门课程成绩和学分* 其他信息略 public Student(int stuNo,String name,intgrades) thisstuNo=stuNo;thisname=name;thisgrades=grades; _(1)_; double computeWg() int totalGrades=0,totalCredits=0: for(int i=0;igradeslength;i+) totalGrades+=gradesi0*gradesi1; totalCredits+=gra

    17、desi1; return(double)totalGradestotalCredits; class ActStudent extends Student private int Apoints; ActStudent(int stuNo,String name,intgrades,int Apoints) _(2)_; thisApoints=Apoints; public double getGPA() return GPA=_(3)_; Class CmpStudent extends Student Private intAwards; CmpStudent(int stuNo,St

    18、ring name,intgrades,intawards) _(4)_; thisAwards=awards; publ ic double getGPA() int totalAwards=0; for(int I=0;iAwardslength;i+) totalAwards+=Awardsi0*Awardsi1; return GPA=_(5)_; public class GPASystem以计算 3 个学生的综合成绩为例进行测试 public static void main(Stringargs) int g12=80,3),90,2,95,3,85,4,86,3), g22=6

    19、0,3),60,2,60,3,60,4,65,3), g32=80,3,90,2,(70,3,65,4,75,3);课程成绩 inte1=2,3,1,2),e2=1,3);竞赛成绩 Student student= new ActStudent(i01,”John”,g1,3),3 为活动分 new ActStudent(102,”Zhang”,g2,0), new ActStudent(103,”Li”,g3,e2), ; 输出每个学生的综合成绩 for(int i=0;istudentlength;i+) Systemoutprintln(_(6)_); (分数:15.00)_计算机水平考

    20、试初级程序员 2013 年上半年下午真题答案解析(总分:90.00,做题时间:150 分钟)一、必答题(共 4 道大题,每道大题 15 分)(总题数:4,分数:60.00)1.阅读以下说明和流程图,填补流程图中的空缺(1)(5),将解答填入答题纸的对应栏内。 【说明】 平面上一个封闭区域内稳定的温度函数式一个调和函数,如果区域边界上各点的温度是已知的(非常数),那么就可以用数值方法近似地计算出区域内各点的温度(非负数)。 假设封闭区域是矩形,可将整个矩形用许多横竖线切分成比较细小的网格,并以最简单的方式建立坐标系统,从而可以将问题描述为:已知调和函数 u(i,j)在矩形0im;0jn)四边上的

    21、值,求函数 u 在矩形内部各个网格点i=1,m=1;j=1,n=1上的近似值。 根据调和函数的特点可以推导出近似算式:该矩形内任一网格点上的函数值等于其上下左右四个相邻网格点上函数值的算术平均值。这样,我们就可以用迭代法来进行数值计算了。首先将该矩形内各网格点上的函数值设置为一个常数,例如 u(0,0);然后通过该迭代式计算矩形内个网格点上的新值。这样反复进行迭代计算,若某次迭代后所有的新值与原值之差别都小于预定的要求(例如 001),则结束求解过程。 【流程图】 (分数:15.00)_正确答案:( (1)0 或任意一个负数 (2)(u(i,j+1)+u(i,j 一 1)+u(i 一 1,j)

    22、+u(i+1,j)4 (3)max (4)new 或(u(i,j+1)+u(i,j 一 1)+u(il,j)+u(i+1,j)4 或等价表示 (5)max)解析: 解析:本题是要完成一个算法的流程。(1)是给 max 赋初始值,由于本题所涉及的数据都是非零数,故可以给 max 赋值为 0 或者为任意一个负数。(2)循环开始后,本题要算的是该矩形内任一网格点上的函数值 new,该值等于其上下左右四个相邻网格点上函数值的算术平均,所以 new 为(u(i,j+1)+u(i,j 一1)+u(i 一 1,j)+u(i+1,j)4。(3)循环继续进行,如果|u(i,j)一 new|max,则将|u(i,

    23、j)一 newl的值赋值给 max,所以填 max,(4)若|u(i,j)一 new|max 不成立,则将 new 或者(u(i,j+1)+u(i,j 一 1)+u(i 一 1,j)+u(i+1,j)4 赋值给 u(i,j)。(5)循环结束,判断 max 是否小于 001,故填 max。如果成立,则迭代算法结束,若不成立,则继续迭代算法。2.阅读以下说明和 C 函数,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数GetDateld(DATE date)的功能是计算并返回指定合法日期 date 是其所在年份的第几天。例如,date 表示2008 年 1 月 25 日时,函数的返回

    24、值为 25,date 表示 2008 年 3 月 3 日时,函数返回值为 63。 函数Kday_Date(int theyear,int k)的功能是计算并返回指定合法年份 theyear(theyear1900)的第 k 天(1k365)所对应的日期。例如,2008 年的第 60 天是 2008 年 2 月 29 日,2009 年的第 60 天是 2009 年3 月 1 日。 函数 isLeapYear(int y)的功能是判断 Y 代表的年份是否为闰年,是则返回 1,否则返回 0。 DATE 类型定义如下: typedef struct int year,month,day; DATE;

    25、【C 函数 1】 int GetDateId(DATE date) Const int days_month13=0,31,28,31,30,31,30,31,31,30,31,30,31; int i,date_id=dateday; for(i=0;i=1&k=1900);*不满足断言时程序终止* dateyear=_(4)_; if(isLeapYear(dateyear)days_month2+; for(i=1;) k=kdays_monthi+; if(k2 或其等价形式 (3)DATE (4)theyear (5)days_monthi1或其等价形式)解析: 解析:本题考查的知识

    26、点是填写程序,本题的程序的功能是计算出某个日期为该年的第几天和某年的第几天是该年的几月几号。函数 1 是填写(GetDateId 这个函数,其中的 for 循环函数的功能是计算该日期是该年的第几天,所以(1)应填 datemonth,但是是在普通年份下计算的,接下来的 if 条件语句是判断该年份是否为闰年,若为闰年且超过 2 月份,则需要在原来的基础上再加一天,若不是闰年或者没超过 2 月份则不用加一天,所以(2)应填 datemonth2。函数 2 是某年的第 k 天对应的日期,首先要定义下 Kday_Date 函数,该函数符合 DATE 类型,所以用 DATE 定义该函数,(3)应填 DA

    27、TE,(4)是将dateyear 赋值为 theyear,所以应该填 theyear,接下来 k=kdays_monthi+是计算日期,如果k0,则 k=kdays_monthi+,若 k0)的下标 i 对应自然数 i,sievei的值为 10 分别表示 i 在不在序列中,也就是将 i 划去(去掉)时,就将 sievei设置为 0。 【C 程序】 #includestdioh #define N 10000 int main() char sieveN+1=0); int i=0,k; *初始时 2N 都放入 sieve 数组* for(i=2;_(1)_;i+) sievei=1; for(

    28、k=2;) *找出剩下的数中最小者并用 K 表示* for(;kN+1&sievek=0;_(2)_); if(_(3)_)break; print(“dt”,k);*输出素数* *从 sieve 中去掉 k 及其倍数* for(i=k;iN+1;i=_(4)_) _(5)_; return 0; / *end of main* /(分数:15.00)_正确答案:( (1)iN+1 或其等价形式 (2)k+或+k 或其等价形式 (3)kN 或 kN+1 或其等价形式 (4)i+k 或其等价形式 (5)sievei=0 或其等价形式)解析: 解析:本题要求是完成程序,该程序的功能是找到不超过自然

    29、数 N 的所有素数。首先在初始时2N 都放入 sieve 数组中,所以 i 的取值范围为 2N,包含 N,所以(1)应该填 i 的最大取值为 N,所以(1)填 iN 或 kN+1 时,即 k 值超过了 N 值时,该循环结束用 break 跳出里面的循环语句,故(3)应该填 kN或 kN+1 或其等价形式,接下来输出素数,再删除素数的倍数,这也是一个循环语句,此时变量 i 是从i 开始到 i+k 结束,所以(4)应填 i+k 或其等价形式,找到是素数的倍数后,再将该素数的倍数赋值为 0,从 sievei数组中划去,所以(5)应填 sievei=0 或其等价形式。4.阅读以下说明和 C 程序,填充

    30、函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 N 个游戏者围成一圈,从 1N 顺序编号,游戏方式如下;从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。 下面的函数 playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N 个人同成的圈用一个包含 N 个结点的单循环链表来表示,如图 41 所示,游戏者的编号放在结点的数据域中。 在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量 c(初值为 1)用于计数,指针变量 P 的初始值为 head,如图 4 一 1 所示。游戏时,从 P 所指向

    31、的结点开始计数,P 沿链表中的指针方向遍历结点,c 的值随 P 的移动相应地递增。当 c 计数到 2 时,就删除 P 所指结点的下一个结点(因下一个结点就表示报数到 3 的游戏者),如图 42 所示,然后将 C 设置为0 后继续游戏过程。 (分数:15.00)_正确答案:( (1)1 (2)q-next 或 p-next-next (3)0 (4)p-next (5)p-code)解析: 解析:本题要求完成程序,该程序的功能是删除报 号为 3 的结点,直到剩下一个结点为止。while 语句中的 n 的取值范围从 1 到 N,又因为 while 语句先执行中括号里的 语句在判断 n 值,所以(1

    32、)应填 n1,while 语句中的 if 条件 语句是判断 p 指向的下一结点是否该删除,若当 c 为 2 时, 则 p 指向的当前结点报号为 2,p 指向的下一个结点,即 p- next 的报号应为 3,该删除,这时应该将 p-next 的指 向 c 为 3 的结点的下一个结点,即 p-next-next,再将 p-next 删除,所以(2)应该填 p-next-next,删除 P -next 之后将开始新一轮的报数,根据题意,将 c 值重新 设置为 0 后继续,所以(3)对 c重新赋值,应该填 0,此时,n 个数已经删去一个数,所以 n 的值相应的要减少,if 语句执 行完后,跳出 if

    33、语句,将 p 重新赋值,即(4)p=p-next, 当从 1 到 n 都执行一遍后,会有一个人留下,即为获胜者,(5)是给获胜者编号赋值所以应该填 p-code,最后返回 获胜者编号,该程序执行完毕。二、选答题(总题数:2,分数:30.00)5.阅读下列说明和 C+代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即 GPA=Wg+Ag。 设一个学生共修了 n 门课程,则其加权平均成绩(Wg)定义如下: 其中,gradei、Ci分别表示该学生第 i 门课程的百分制

    34、成绩及学分。 学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加 m 项学科竞赛): 其中,li 和 Si 分别表示学生所参加学科竞赛的级别和成绩。 对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为 0 计算。 下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类 Student 描述,包括学号(stuNo)、姓名(name)、课程成绩学分(grades)和综合成绩(GPA)等,参加社会活动的学生由类 ActStudent 描述,其活动分由 Apoints

    35、 表示,参加学科竞赛的学生由类 CmpStudent 描述,其各项竞赛的成绩信息由 awards 表示。 【C+代码】 #include #include using namespace std; const int n=5; *课程数* const int m=2; *竞赛项目数* class Student protected: int stuNo;string name; double GPA; *综合成绩* int(*grades)2; *各门课程成绩和学分* public: Student(const int stuNo,const string&name,int grades2)

    36、this-stuNo=stuNo;this-name=name;this-grades=grades; VirtualStudent() int getstuNo()*实现略* string getName()*实现略* _(1)_; double computeWg() int totalGrades=0,totalCredits=0: for(int i=0;iN;i+) totalGrades+=gradesi0*gradesi1;totalGredits+=gradesi1; return GPA=(double)totalGradestotalCredits; ;class ActS

    37、tudent;public Student int Apoints; public; ActStudent(const int stuNo,const string&name,int gs2,int Apoints) :_(2)_ this-Apoints=Apoints: double getGPA()return GPA=_(3)_; ; class CmpStudent:public Student private: int(*awards)2; public: cmpstudent(const int stuNo,const string&name,int gs2,int awards

    38、2) :_(4)_ this-award=award; double getGPA()f int Awards=0; for(int i=0;iM;i+) Awards+=awardsi0*awardsi1: Return GPA=_(5)_; ; int main() 以计算 3 个学生的综合成绩为例进行测试 int g12=80,3,90,2,95,3,85,4,86,3, g22=60,3,60,2),60,3,60,4,65,3, g32=80,3,(90,2,70,3,65,4,75,3; 课程成绩 int c32=2,3,3,3); 竞赛成绩 Student*student3= n

    39、ew ActStudent(101,”John”,g1,3), 3 为活动分 new ActStudent(102,”Zhang”,g2,0), new ActStudent(103,”Li”,g3,c3), ; 输出每个学生的综合成绩 for(int i=0;i_正确答案:( (1)virtual double getGPA()=0 (2)Student(stuNo,name,gs) (3)computeWg()+Apoints或 Student:computeWg()+Apoints (4)Student(stuNo,name,gs) (5)computeWg()+Awards 或Stud

    40、ent:computeWg()+Awards (6)studentsi-getGPA()解析: 解析:本题的程序功能是计算学生的综合成绩(GPA)其中 GPA 由其课程加权平均成绩 Wg 与附加分Ag 构成,即 GPA=Wg+Ag。首先定义了一个 getGPA()函数并为函数赋初始为 0,(1)填 virtual double getGPA()=0,其中 virtual 是指在 windows 下 C+的开发环境,double 定义了 GPA 的值都为双精度浮点数。(2)是计算学生的活动的附加分,调用 Student()函数,括号内的变量用已经定义过的变量名替代,即Student(stuNo,

    41、name,gs)。在 Student()函数中调用了 getGPA 函数,引用了题目中给的公式GPA=Wg+Ag,所以(3)应填 computeWg()+Apoints。(4)是计算学生竞赛的附加分的函数,其中又调用了一次 Student 函数,所以同(2)一样填 Student(stuNo,name,gs)。(5)同(3)一样,是在 Student 函数中调用了 get-GPA 函数,引用了题目中给的公式 GPA=Wg+Ag,所以(5)应填 computeWg()+Awards,与(3)不同的是,这次 Wg 加的是竞赛的附加分。(6)是在主函数的 for 循环里面,由于共有 3 个学生,所以

    42、 i 的取值范围为 03,并将 studentsi的值赋值给 GPA,所以(6)应填 studentsi-getGPA()。6.阅读以下说明和 Java 程序,填充代码中的空缺,将解答填入答题纸的对应档内。 【说明】 某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即 GPA=Wg+Ag。 设一个学生共修了 n 门课程,则其加权平均成绩(Wg)定义如下: 其中,gradei、Ci 分别表示该学生第 i 门课程的百分制成绩及学分。 学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoint

    43、s)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加 m 项学科竞赛): 其中,li 和 Si 分别表示学生所参加学科竞赛的级别和成绩。 对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为 0 计算。 下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类 Student 描述,包括学号(stuNo)、姓名(name)、课程成绩学分(grades)和综合成绩(GPA)等,参加社会活动的学生由类 ActStudent 描述,其活动分由 Apoints 表示,参加学科竞赛的学生由类 CmpStudent 描述,其各项竞赛的成绩信息由 awards 表示。 Ja

    44、va 代码】 abstract class Student protected String name; protected int stuNo; protected double GPA; *综合成绩* protected intgrades; *各门课程成绩和学分* 其他信息略 public Student(int stuNo,String name,intgrades) thisstuNo=stuNo;thisname=name;thisgrades=grades; _(1)_; double computeWg() int totalGrades=0,totalCredits=0: for(int i=0;igradeslength;i+) totalGrades+=gradesi0*gradesi1; totalCredit


    注意事项

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




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

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

    收起
    展开