ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:811.48KB ,
资源ID:25532537      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25532537.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(上半年程序员考试真题及答案下午卷.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

上半年程序员考试真题及答案下午卷.docx

1、上半年程序员考试真题及答案下午卷2021上半年程序员考试真题及答案-下午卷试题一平面上一个封闭区域内稳定的温度函数是一个调和函数。假如区域边界上各点的温度是的非常数,那么就可以用数值方法近似地计算出区域内各点的温度。假设封闭区域是矩形,可将整个矩形用许多横竖线切分成比拟细小的网格,并以最简单的方式建立坐标系统,从而可以将问题描绘为:调和函数u(i,j)在矩形0im;0jn四边上的值,求函数u在矩形内部各个网格点(i,j)|i=1,m-1;j=1,n-1上的近似值。根据调和函数的特点可以推导出近似算式:该矩形内任一网格点上的函数值等于其上下左右四个相邻网格点上函数值的算术平均值。这样,我们就可以

2、用迭代法来进展数值计算了。首先将该矩形内部所有网格点上的函数值设置为一个常数,例如u(0,0);然后通过该迭代式计算矩形内各网格点上的新值。这样反复进展迭代计算,假设某次迭代后所有的新值与原值之差异都小于预定的要求如0.01),那么完毕求解过程。阅读以上说明和流程图,填补流程图中的空缺1)5),将解答填入答题纸的对应栏内。(1) 0或任意一个负数(2) (u(ij+1)+u(ij-1)+u(i-1j)+u(i+1j)/4或等价表示(3) max(4) new或(u(i,j+l)+u(i,j-l)+u(i-lj)+u(i+l,j)/4或等价表示(5) max试题二共15分此题考察算法数值计算流程

3、的描绘。封闭区域内稳定没有奇异点的温度场、磁场等都是调和函数。边界上的值,就可以近似计算区域内各点的值。对于网格化后的矩形区域0im;0jn,其边界点为(0,j)丨j=0,.,n、(i,0)丨i=0,.,m、(m,j)丨j=0,.,n、(i,n)|i=0,.,m,其内点为(i,j)|i=1,.m-l;j=1,.,n-l。此题采用迭代法进展近似计算。初始时,设矩形每个内点处的u(ij)均等于常数u(0,0)。每次迭代需要再计算出所有内点处的u(ij)新值。为了检查迭代能否完毕,需要算出所有内点处函数u的新值与旧值之差的绝对值是否都小于0.01(或判断其最大值是否小于0.01)。为此,每次算出的新

4、值需要先暂存于一个临时变量new。它应是点(ij上下左右四个点处u值的算术平均值,因此2)处应填(u(i,j+1)+u(i,j-1)+u(i-1,j)+u(i+1,j)/4。为了计算本次迭代中新老值之差的绝对值|u(ij)-new|的最大值max,需要先对max赋一个不可能再低的值由于绝对值总是非负,所以max常先存0)。因此1)处可以填0(填任何一个负数也是可以的。当某个内点处新老u值之差的绝对值超过max时,就需要将该值赋给max。因此,(3)处应填max。不管是否更新了max,此后新值就可以替代老值了。因此4)处应填newo(5)处应填本次迭代求出的最大值max,以判断它是否小于0.01

5、,是否到达了近似要求。假如已经到达误差要求,那么计算完毕,所有的u(ij)就是计算结果。否那么,还需要继续进展迭代。试题二函数GetDateId(DATEdate)的功能是计算并返回指定合法日期date是其所在年份的第几天。例如,date表示2021年1月25日时,函数的返回值为25,date表示2021年3月3日时,函数返回值为63。函数KdayDate(inttheyear,intk)的功能是计算并返回指定合法年份theyear(theyear1900)的第k天1k365)所对应的日期。例如,2021年的第60天是2021年2月29日,2021年的第60天是2021年3月1日。函数isLe

6、apYear(inty)的功能是判断y代表的年份是否为闰年,是那么返回1,否那么返回0。DATE类型定义如下:填充函数中的空缺,将解答填入答题纸的对应栏内。1)date.month(2) date.month2或其等价形式(3) DATE(4) theyear(5) days_monthi-1或其等价形式此题考察c程序的根本语法和运算逻辑。函数GetDateId(DATE date)的功能是计算并返回指定合法日期date是其所在年份的第几天。处理思路是:先将1月date.month-l月的天数累加起来,然后加上date.month的天数date.day即可。假设date.month2,那么需要

7、考虑特殊情况2月份,在闰年为29天而不是28天。因此,空1)处应填入date.month,空2)处应填入date.month2。函数Kday_Date(int theyear,int k)的功能是计算并返回指定合法年份theyear (theyear1900)的第k天1k365)所对应的日期。根据说明,显然空3)应填入“DATE。当k0)的下标i对应自然数i,sievei的值为1/0分别表示i在/不在序列中,也就是将i划去去掉时,就将sievei设置为0。阅读以上说明和C程序,填充程序中的空缺,将解答填入答题纸的对应栏内。(1) iN或kN+1或其等价形式(4) i+k或其等价形式C5)sie

8、vei=0或其等价形式此题考査c程序的运算逻辑,应用案例是埃拉托斯特尼筛法求素数。显然,空所在的for语句用于设置Sieve的初始值,根据题目描绘,一开场1N范围内的自然数i都在序列中,因此对应的数组元素sievei都要设置为丨。因此,空1)处应填入“iN或其等价形式,表示要找的最小素数己经大于N,应完毕处理。空4)和5)所在for语句用于将刚找出的素数k及其倍数从序列中去掉,用i表示k的倍数包括k自己时,i的取值为k,2k,3k在i的初值己设置为k的情况下,i的迭代方式为i=i+k,因此空4)处应填入“i+k,空5)处应填入“sievei=0试题四N个游戏者围成一圈,从1N顺序编号,游戏方式

9、如下:从第一个人开场报数从1到3报数),凡报到3的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。下面的函数playing(LinkList head)模拟上述游戏过程并返回获胜者的编号。其中,N个人围成的圈用一个包含N个结点的单循环链表来表示,如图4-1所示,游戏者的编号放在结点的数据域中。在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量c(初值为1)用于计数,指针变量p的初始值为head(如图4-1所示)。游戏时,从p所指向的结点开场计数,p沿链表中的指针方向遍历结点,c的值随p的挪动相应地递增。当c计数到2时,就删除P所指结点的下一个结点因下一个结点就表示报数到3的游戏者

10、,如图4-2所示,然后将c设置为0后继续游戏过程。阅读以上说明和C程序,填充函数中的空缺,将解答填入答题纸的对应栏内。(1) 1(2) q-next或p-next-next(3) 0(4) p-next(5) p-code此题考察数据构造的应用和C程序的运算逻辑,主要涉及指针和链表。由于游戏最后剩一人时完毕,因此空1)处应填入“1,表示N1时游戏过程要继续。当c等于2时,p所指结点的后继表示为q(q=p-next),q所指结点即为要删除的结点,即如下列图所示。此时,需要修改p所指结点的指针域,令其指向q所指结点的后继结点,对应的操作为p-next=q-next(等同于p-next=p-next

11、-next),因此空2)处应填入“q-next或“p-next-next。将q所示结点删除后的相关指针如下列图所示。 试题五某学校在学生毕业时要对其成绩进展综合评定,学生的综合成绩GPA)由其课程加权平均成绩Wg与附加分Ag构成,即GPA=Wg+Ag。设一个学生共修了n门课程,那么其加权平均成绩Wg)定义如下:其中,gradei、Ci;分别表示该学生第i门课程的百分制成绩及学分。学生可以通过参加社会活动或学科竞赛获得附加分Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)那么由下式计算一个学生最多可参加m项学科竞赛):其中,li和Si分别表示学生所参加

12、学科竞赛的级别和成绩。对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为0计算。下面的程序实现计算学生综合成绩的功能,每个学生的根本信息由抽象类Student描绘,包括学号stuNo)、姓名name)、课程成绩学分grades)和综合成绩GPA)等,参加社会活动的学生由类ActStudent描绘,其活动分由Apoints表示,参加学科竞赛的学生由类CmpStudent描绘,其各项竞赛的成绩信息由awards表示。阅读说明和C+代码,填充代码中的空缺,将解答填入答题纸的对应栏内。(1) virtual double getGPA()=0(2) Student (stuNo,name,gs)

13、(3) computeWg()+Apoints 或 Studen t:computeWg()+Apoints(4) Student(stuNo,name,gs)(5) computeWg()+Awards或Student:computeWg()+Awards(6) studentsi-getGPA()此题考察C+语言程序设计的才能,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。先考察题目说明。以学校计算综合成绩(GPA)为背景。此题目中综合成绩除了考虑根底课程加权平均成绩吵之外,还有附加分处,程序的主要任务是计算加权平均成绩和附加

14、分,并根据情况选择社会活动或学科竞赛获得的不同附加分:活动分(Apoints)或竞赛分Jwarcfa)。每种成绩计算方式如题中所述。根据说明,将学生设计为一种类型,设计为类Student,学号stuNo)、姓名name)、课程成绩学分grades)和综合成绩GPA)分别作为其数据属性,构造函数中对stuNo、name,grades进展初始化,用相应的get函数获取相关属性值。对于GPA的获取值的函数,因为不同附加分的计算方法不同,设计为纯虚函数,详细实现由子类完成。将计算加权平均成绩设计为doublecomputeWg()。将有活动附加分的学生设计为ActStudent,有竞赛附加分的学生设计

15、为CmpStudent,都作为Student的子类。子类中,继承父类中访问属性为protected的属性,其构造函数进展初始化时,调用父类Student中的构造函数对学号、工程和学分成绩进展初始化,并对活动分或竞赛分进展初始化。ActStudent(constint stuNo,conststring &name,intgs2,intApoints):Student(stuNo,name,gs)或CmpStudent(constint stuNo,conststring&name,intgs2,intawards2):Student(stuNo,name,gs)在子类中,实现了获取GPA的函数

16、getGPA,根据题目描绘,GPA的计算方式为加权平均成绩吟)和附加分)之和,所以返回值就是:computeWg()+Apoints或computeWg()+Awards其中,computeWg()在父类Student中定义,子类直接可以作为自己的函数一样使用。主控逻辑代码在main函数中实现。初始化学生的各科学分和成绩,用数组gi表示,学生的竞赛分用数组ci表示。用Student*student定义学生数组,而每个详细的学生是ActStudent或CmpStudent类型的对象,这里会自动向上转型成为Student类型。用for循环对每个学生的综合成绩进展输出,调用时会继续动态绑定每个数组元

17、素的实际类型,并调用其getGPA函数,艮P:coutstudentsi-getGPA()endl;使用完指针数组对象之后,需要用delete操作进展释放,即:delete*students;0因此,空1)需要指向定义纯虚函数getGPA(),即为virtualdoublegetGPA()=0;空2)和空(4)需要调用父类的构造函数,即Student(stuNo,name,gs);空3)处计算附加分为活动分的GPA,调用computeWg()计算加权平均分,再加上附加分Apoints,即空3)为computeWg()+Apoints;空5)处计算附加分为竞赛分的GPA,调用computeWg(

18、)计算加权平均分,再加上计算出来的总竞赛分Awards,即空5)为computeWg()+Awards;空6)处为在循环中根据数组下标所表示的每个学生对象调用getGPA()输出每个学生的GPA,即studentsi-getGPA()。试题六某学校在学生毕业时要对其成绩进展综合评定,学生的综合成绩GM)由其课程加权平均成绩Wg)与附加分处)构成,即GPA=吟+处。设一个学生共修了n门课程,那么其加权平均成绩吟定义如下:其中,gradei、C;分别表示该学生第i门课程的百分制成绩及学分。学生可以通过参加社会活动或学科竞赛获得附加分dg)。学生参加社会活动所得的活动分Apoints)是直接给出的,

19、而竞赛分dwarfs)那么由下式计算一个学生最多可参加m项学科竞赛):其中,li 和Si分别表示学生所参加学科竞赛的级别和成绩。对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为0计算。下面的程序实现计算学生综合成绩的功能,每个学生的根本信息由抽象类Studem描绘,包括学号stuNo)、姓名name)、课程成绩学分grades)和综合成绩GPA)等,参加社会活动的学生由类ActStudent描绘,其活动分由Apoints表示,参加学科竞赛的学生由类CmpStudent描绘,其各项竞赛的成绩信息由awards表示。 阅读说明和Java程序,填充代码中的空缺,将解答填入答题纸的对应栏内。(

20、1) abstract double get GPA()(2) super(stuNo,name,grades)(3) compute Wg ()+Apoints或super puteWg()+Apoints(4) super(stuNo,name,grades)(5) computeWg()+totalAwards或super puteWg()+totalAwards(6) studentsfi.getGPA()此题考査Java语言程序设计的才能,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。先考察题目说明。以学校计算综合成绩(

21、GPA)为背景。此题目中综合成绩除了考虑根底课程加权平均成绩Wg)之外,还有附加分Ag),其主要任务是计算加权平均成绩和附加分,并根据情况选择社会活动或学科竞赛获得的不同附加分:活动分(Apoints)或竞赛分Awards)。每种成绩计算方式如题中所述。根据说明,将学生设计为一种类型,设计为类Student,学号stuNo)、姓名name)、课程成绩学分grades)和综合成绩GPA)分别作为其数据属性,构造方法中对stuNo、name、grades进展初始化,用相应的get方法获取相关属性值。对于GPA的获取值的方法,因为不同附加分的计算方法不同,设计为抽象方法,实现由子类完成。因为类中包含

22、抽象方法,所以Student必须设计为抽象类。将计算加权平均成绩设计为方法double compute Wg()。将有活动附加分的学生设计为ActStudent,有竞赛附加分的学生设计为CmpStudent,都作为Student的子类。子类中,继承父类中访问属性为protected的属性,其构造方法进展初始化时,调用父类Student中的构造方法对学号、工程和学分成绩进展初始化,并对活动分或竞赛分进展初始化。Java中,调用父类的构造方法在构造方法体内的第一条语句,即:Act Student(intstuNo,Stringname,intgrades,intApoints)在子类中,实现了获取

23、GPA的方法getGPA,根据题目描绘,GPA的计算方式为加权平均成绩Ag和附加分Wg)之和,所以返回值就是:compute Wg()+Apoints或computeWg()+totalAwards其中,compute Wg()在父类Student中定义,子类直接可以作为自己的方法一样使用。主控逻辑代码在GPASystem类中的main方法中实现。初始化学生的各科学分和成绩,用数组gi表示,学生的竞赛分用数组ei表示。用Studen tstudent定义学生数组,而每个详细的学生是ActStudent或CmpStudent类型的对象,这里会自动向上转型成为Student类型。用for循环对每个

24、学生的综合成绩进展输出,调用时会动态绑定每个数组元素的实际类型,并调用其getGPA()方法,即:System.out.println(studentsi.getGPA();因此,空1)需要指向定义抽象方法getGPA(),即为abstractdoublegetGPA();空(2) 和空(4)需要调用父类的构造方法,即super(stuNo,name,grades);空(3)处计算附加分为活动分的GPA,调用computeWgO计算加权平均分,再加上附加分Apoints,即空(3)为computeWg()+Apoints;空(5)处计算附加分为竞赛分的GPA,调用computeWg()计算加权平均分,再加上计算出来的总竞赛分totalAwards,即空5)为computeWg()+totalAwards;空6)处为在循环中根据数组下标所表示的每个学生对象调用getGPA()输出每个学生的GPA,即studentsi.getGPA()。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1