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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文([计算机类试卷]2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc)为本站会员(amazingpat195)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc

1、2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读下列说明和流程图,将应填入 (n)处。流程图说明 下面的流程图描述了对 8位二进制整数求补的算法。 该算法的计算过程如下:从二进制数的低位 (最右位 )开始,依次向高位逐位查看,直到首次遇到 “1”时,停止查看。然后,对该 “1”位左面的更高位 (如果有的话 ),逐位求反,所得的结果就是对原二进制数求补的结果。 例如:对二进制整数 10101000求补的结果是 01011000。 设 8位二进制整数中的各位,从低位到高位,依次存放在整型 数组 BIT的 BITl BIT8中。例如,二进制整数 10101

2、000存放在数组 BIT后,就有 BITl=0, BIT2=0, , BIT7=0,BIT8=1。若流程图中存在空操作,则用 NOP表示。流程图 流程图中 (1)处按 “循环变量名:循环初值,增量,循环终值 ”格式描述。 2 阅读下列函数说明和 C代码,将应填入 (n)处的字句写在答题纸的对应栏内。 函数说明 函数 sort(iraa, int n)的功能是对数组 a中的 a0 an-1这 n个元素进行排序。排序过程如下:第一 趟对所有的偶数下标 p,比较 ap和 ap+1,若 apap+1,则将两者交换;第二趟对所有的奇数下标 q,比较 aq和 aq+1),若 aq aq+1),则将两者交换

3、;第三趟对偶数下标,第四趟对奇数下标, ,依次类推,直至整个数组元素有序排列为止。 函数 void sort(iht a,iht n) int i, j, t, tag=1; for(j=0; j n; j+) for(i=(1); i n-1; (2) ) if (ai ai+1)t=a1; ai=ai+1); ai+1=t; tag=0; tag+; if(3) break; 对包含十个元素的数组 a采用上述方法排序时,元素间的比较次数最少为 (4) 次,最多为 (5) 次。 3 阅读下列函数说明和 C代码,将应填入 (n)处的字句写在答题纸的对应栏内。函数说明 函数 movetoend(

4、1inkedList La,int i)的功能是:将线性表 A的第 i个元素移到表尾。若移动成功,则返回 0,否则返回 -1。线性表 A采用带头结点的单链表表示, La为表 A的头指针,如下图所示。 链表结点的类型定义为; typedef struct node int key; street node*next; *LinkedList;函数 int movetoend(LinkedList La,int i) LinkedListp,q,prep; int k=1; p=La- next;prep=La; while( (1) )/*严查找第 i个元素并使指针 p指向该结点 */ prep

5、=p; p=p-next; k+; if(!p|k i)return-1; if( (2) ) /*第 i个元素结点已经是表尾结点,则无需移动 */ return 0; q=p; while( (3) )q=q- next; /*查找表尾并使 q指向表尾结点 */ (4)=p- next; p- next=NULL; (5); return 0; 4 阅读以下说明和 C代码,将应填入 (n)处的字句写在答题纸的对应栏内 。说明 某单位举办了一场知识竞赛,参加竞赛的选手为 300名,依次从 1 300进行编号。竞赛时间为 9:00 11:00。 8道竞赛题目依次从 “A” “H”编号,选手可按任

6、意次序答题,每完成一道题目,可立即提交答案。若答案正确 (Y),则选择其他题目进行解答,否则,可继续做该题目或选择其他题目进行解答,直至竞赛结束。 选手提交答案的情况及判定结果由专人即时录入,录入的数据如表 1所示,对竞赛情况进行统计和排名的结果如表 2所示。统计和排名的规则如下: 1若选手 X在竞赛时提交的题目 P解答正确,则解答该题目所用时间如下 计算; 解答题目 P的用时 =提交题目 P正确的时间 -竞赛的开始时间 +罚时 罚时 =提交题目 P错误解答的次数 20 例如 =表 1中 14号选手在 10:27提交了题目 A的正确解答,因此该选手正确解答该题目所用时间为 87分钟,由于之前的

7、两次提交错误解答,罚时为 220=40分钟,所以 14号选手解答题目 A的用时 =87+40=127(分钟 )。 2已经提交正确答案的题目再次提交时不再计算。 3竞赛结束时,选手的总用时为所有解答正确的题目用时累加所得,解答不正确的题目不计时。 4排名时,完成题目数量多者排名靠前;若完成的题目 数相同,则用时少者排名靠前;若完成的题目数和所用时间均相等,则名次相同;完成题目数为。的选手不参加排名。 函数 void Statistic()的功能是:读取输入数据,进行统计、排名并输出结果。 #define MAXN 300 typedef stmct int no; /*选手编号 */ int n

8、um; /*完成的题目数量 */ int time; /*完成题目的总用时 */ int d8; /*di用于记录提交第 i个题目错误答案的次数 */ int a8; /*ai用于记录第 i个题目是否已经 提交正确答案 */ Info; void Statistic() char ch,pass; int i,j,k,h,m,t,time,Maxlndex; Info RMAXN+1 ; for(i=1; i =MAXN; i+) /*数组 R的元素置初值 0*/ Ri.no = 0;Ri.num = 0; Ri.time = 0; for(j=0; j 8; j+) Ri.dj = 0; R

9、i.aj = 0; /*for*/ MaxIndex = 0; while (1) /*录入一名选手提交答案的信息 (小时:分钟,选取手编号,题目号,是否正确 )*/ scanf(“%d:%d,%d,%c,%c“, if(h=0) break; Rk.no = k; /*k为选手编号码 */ time=(1); /*计算答题时间,以分钟为单位 */ if(isupper(ch) ch = a + ch- A; if(pass != Y continue; if (Rk.ach-a=1) continue; Rk.ach-a = 1; Rk .num+; Rk.time +=(2); if (k

10、 MaxIndex) Maxlndex = k; /*while*/ for(i=l; i MaxIndex; i+) /*选取择排序 */ for(t=i,j=i+1; j=Maxlndex; j+) if(Rt.num Rj.num| (3)t=j; if(4) R0=Rt;Rt=Ri;Ri=R0; /*for*/ k=1; R0 = Rl; for(i=1; i =Maxlndex; i+) /*输出排名情况 */ if (R,i.num 0) if(Ri.num!=R0.num|Ri.time!=R0.time) k+; R0=(5); printf(“%d: %3d %4d %5dn

11、“,k,Ri.no,Ri num,Ri time); )/*if*l /*Statistic*/ 5 阅读以下应用说明及 Visual Basic程序代码,将应填入 (n)处的字句写在答题纸的对应栏内。应用说明 某单位举办了一场知识竞赛,有 300名选手参加竞赛,依次从 1 300为选手编号。竞赛时间为 9:00 11:00。 8道竞赛题目依次从 “A” “H”编号,选手可按任意次序答题,每完成一道题目,可立即提交答案。若答案正确(Y),则选择其他题目进行解答,否则,可继续做该题目或选择其他题目进行解答,直至竞赛结束。 选手提交答案的情况及判定结果由专人即时录入,录入数据包括提交答案的时间、选

12、手编号、题目编号 (A H)、是否正确 (Y/N)。 对竞 赛情况进行统计和排名的规则如下: 1若选手 X在竞赛时提交的题目 P解答正确,则解答该题目所用时间如下计算: 解答题目 P的用时 =提交题目 P正确的时间 -竞赛的开始时间 +罚时 罚时;提交题目 P错误解答的次数 20 例如:设 14号选手在 10:27提交了题目 A的正确解答,则该选手正确解答该题目所用时间为 87分钟,由于他在 09:37和 09:52两次提交了题目 A的错误解答,因此罚时为 220=40分钟,所以14号选手解答题目 A的用时 =87+40=127(分钟 )。 2已经提交正确答案的题目再次提交时不再计算。 3竞赛

13、结 束时,选手的总用时为所有解答正确的题目用时累加所得,解答不正确的题目不计时。 4排名时,完成题目数量多者排名靠前;若完成的题目数相同,则用时少者排名靠前:若完成的题目数和所用时间均相等,则名次相同;完成题目数为 0的选手不参加排名。 本应用程序的运行窗口如下图所示: 窗口中的两个文本框为 Txt_time和 Txt_player,分别用于录入提交答案的时间和选手编号。组合列表框 Combol提供题目编号 (A H),录入时从中选择。检查框 Chk yn用于输入解答是否正确信息。当单击 “确定 ”按钮 (Cmd_comfirrn)时,录入的提交信息加入组合列表框 Listl中,排名情况在列表

14、框 List2输出。单击 “关闭 ”按钮时退出应用程序。 在开发过程中,需要编写的部分程序代码如下:程序代码 Private Tyve Info no As Integer 选手编号 hum As Integer 完成的题目数量 time As Integer 完成题目的总用时 d(8) As Integer di用于记录提交第 i个题目错误答案的次数 a(8) As Boolean aCi用于记录第 i个题目是否已经提交正确答案 End Type Dim R(301) As Info Rj用于统计编号为 j的选手提交答案的情况 Dim Maxlndex As Integer MaxIndex

15、记录提交答案的选手中编号最大者 Private Sub Form_Load() For i=1 To 8 Combol.Addltem Chr( (1) ) Next Combol.Text = Combol.List(0): Txt_time. Text= “: Txt_player. Text= “ For i = 1 To 300 R(i).num=0: R(i).time = 0: R(i).no = I Forj = 1 To 8 R(i).d(j) = 0: R(i).a(j) = False Next j, i End Sub Private Sub Crud_confirm_C

16、lick() Dimh, m, k, time As Integer, ch, pass, sl As String k = InStr(Txt_time.Text, “:“): If k 2 Then GoTo errorl h = Val(Left(Txt_time. Text, k - 1 ): m = Val(Mid(Txt_time. Text, k + 1 ) Ifh 11 Or h = 11 And m 0 Or m = 60 Then GoTo errorl time=(2) 计算答题时间,以分钟为单位 If Txt player. Text 1 Or Txt_player.

17、Text 300 Then GoTo errorl ch=(3) 取题目编号 pass = llf(Chk_yn. (4)= 0, “N“, “Y“) s1 = Txt_time. Text+ Space(4)+ Txt_player. Text s1 = s1 + Space(10 - Len(Txt_player. Text)+ ch + Space(8) + pass Listl .Addltem s1 k = Val(Txt_player. Text) k为选手编号 R(k).no = k 编号为 K的选手的提交信息记录在下标在 K的数组元素中 If k Maxlndex Then M

18、axlndex = k m = Asc(ch) - Ase(“A“) Ifpass “Y“ Then 编号为 K的选手提交第 m个题目的解答不正确 R(k).d(m) = R(k).d(m) + 1 Elself R0(k).a(m) True Then 已经提交正确的题目的解答不再计算 R(k).a(m) = True: R(k).num = R(k).num + I R(k).time = R(k).time +(5) Call Statistic 调用过程 Statistic 进行实时排名和输出 End If Exit Sub errorl: MsgBox “录入信息有误 !“, vbO

19、KOnly End Sub 6 阅读以下应用说明及 Visual Basic部分程序代码,将应填入 (n)处的字句写在答题纸的对应栏内。应用说明 设一个简单的 “通讯录 ”存储在一个 ACCESS类型的数据库表中,包括姓名、电话和 email三个字段。下面的应用程序实现对 “通讯录 ”数据库表中的记录进行增加、删除及修改处理,其运行界面如下: (1)数据控件 (datal)与 “通讯录 ”数据库表相连接,用户可通过 “ ”和 “ ”按钮指定表中的当前记录。 (2)文本 框 Txt name、 Txt phone和 Txt email分别与数据库表中的 “姓名 ”、 “电话 ”和 “email”

20、字段绑定,用于显示当前记录的内容。 (3)应用程序启动时, “确定 ”按钮 (Cmd ok)和 “取消 ”按钮 (Cmd cancel)不可操作,文本框中显示表中的第一条记录,这时文本框处于不可操作状态。 (4)单击 “增加 ”按钮 (Cmd_add)或 “修改 ”按钮 (Cmd_modify)后,方可以编辑记录内容,同时 “增加 ”、 “删除 ”、 “修改 ”和 “退出 ”按钮变为不可操作状态。 “增加 ”和 “修改 ”操作需通过 “确定 ”和 “取 消 ”按钮确认。 (5)单击 “删除 ”按钮 (Cmd del)后,弹出对话框,再单击 “确定 ”按钮,当前记录被删除。程序代码 Privat

21、e Sub enableop(isEnabled As Boolean) Txt_name.Enabled=isEnabled: Txt_phone.Enabled=isEnabled Txt_email.Enabled=isEnabled Cmd_ok.Enabled=isEnabled: Cmd_eancel.Enabled=isEnabled Cmd_add.Enabled=Not isEnabled: Cmd_del.Enabled=Not isEnabled Cmd_end.Enabled=Not isEnabled: Cmd_modify.Enabled=Not isEnabled

22、 EndSub Private Sub Form_Load() Call enableop(False) Data1.Refresh If Data1 .Recordset. RecordCount = 0 Then Cmd_del. Enabled= False: Cmd_modify. Enabled=(1) End If End Sub Private Sub Cmd_add_Cliek() 单击 “增加 ”按钮的代码 Call enableop( (2) ) Datal .Recordset. AddNew 在数据库表中添加一个新记录 Txt name. (3) End Sub Pri

23、vate Sub Crud_del_Click() 单击 “删除 ”按钮的代码 On Error GoTo error3 arts = MsgBox(“确定删除吗 ?“, vbYesNo + vblnformafion, “操作提示 !“) If (ans = vbYes) Then Datal.Recordset. (4) Datal .Recordset. MoveNext If Datal .Recordset. EOF Then Data l.Refiesh End If Exit Sub error3: MsgBox Err. Description, vbOKOnly, “错误提示

24、 !“ End Sub Private Sub Cmd_ok_Click() 单击 “确定 ”按钮的代码 On Error GoTo errorl Datal.Recordset. (5) Call enableop(False) Exit Sub error 1: MsgBox Err. Description, vbOKOnly, “错误提示 !“ Datal.UpdateControls Call enableop(False) End Sub “修改 ”和“取消 ”按钮的程序代码 (略 ) 7 阅读以下说明和 C+程序,将应填入 (n)处的字句写在答题纸的对应栏内。 说明 以下程序的功

25、能是计算三角形、矩形和正方形的面积并输出 。 程序由 4个类组成:类 Triangle、 Rectangle和 Square分别表示三角形、矩形和正方形;抽象类 Figure提供了一个纯虚拟函数 getArea(),作为计算上述三种图形面积的通用接口。 c+程序 #include iostream.h #inclule math.h class Figure public: virtual double getArea()= 0; / 纯虚拟函数 ; class Rectangle: (1) protected: double height; double width; public: Rec

26、tangle() ; Rectangle(double height, double width) this- height = height; this- width = width; double getArea() return (2) ; class Square: (3) public: Square(double width) (4) ; ; class Triangle: (5) double la; double lb; double lc; public: Triangle(double la, double lb, double lc) this- la = la; thi

27、s- lb =lb; this- lc = lc; double getArea() double s = (la+lb+lc)/2.0; return sqrt(s*(s-la)*(s-lb)*(s-lc); ; void main() Figure* figures3 = new Triangle(2,3,3), new Rectangle(5,8), new Square(5); for (int i = 0; i 3; i+) com “figures“ i “ area =“ (figuresi)- getArea0 endl; 8 阅读以下说明和 Java源程序,将应填入 (n)处

28、的字句写在答题纸的对应栏内。 说明 以下程序的功能是计算三角形、矩形和正方形的面积并输出。 程序由 5个类组成: AreaTest是主类,类 Triangle、 Rectangle和 Square分别表示三角形、矩形和正方形,抽象类 Figure提供了一个计算面积的抽象方法。 程序 public class AreaTest public static void main(String args) Figurefigures= new Triangle(2,3,3), new Rectangle(5,8), new Square(5) ; for(int i=0; i figures 1eng

29、th; i+) System.out.println(figuresi+“area=“+figuresi getArea(); public abstract class Figure public abstract double SetAJea(); public class Rectangle extends (1) double height; double width; public Rectangle(double height,double width) this.height=height; this.width=width; public String toString() r

30、eturn “Rectangle:height=“+height+“,width=“+width+“:“; public double getArea() return (2); public class Square extends (3) public Square(double width) (4); public String toString() return “Square:width=“+width+“:“; public class Triangle extends (5). double la; double lb; double lc; public Triangle(do

31、uble la,double lb,double lc) this.la=la; this.lb=lb; this.lc=lc; public String toString() return “Triangle: sides=“+la+“,“+lb+“,“+lc+“:“; public double getArea() double s=(la+lb+lc)/2.0; return Math.sqrt(s*(s-la)*(s-lb)*(s1c); 2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷答案与解析 1 【正确答案】 (1)i:1, 1; 8 (2)1SW ,或

32、ksw 且 k0 (3)0BITi (4)NOP,或空操作 (5)1BITi 【试题解析】 本题考查的是流程图。 由于题目中给出了对 8位二进制整数求补的算法,并且指明将 8位二进制整数中的各位,从低位到高位,依次存放在整型数组 BIT的 BIT1 BIT8中,因此,循环控制变量的初值应该为 1(从二进制数中的最低位开始 )、终值为 8(二进制数中的每一位都要检查 )、增量为 1(每次检查 1位 ),按照 “循环变量名:循环初值,增量,循环终值 ”格式描述,则为: i:1, 1, 8。 由题目中给出的算法可知,从最右位开始向左找到的第一个 “1”及其右边的各位是不取反的,因此需要一个标志, s

33、w起的就是这个作用。 由于 SW的初始值为 0,所以在找到从右边数的第 1个 “1”之前,当 BITi等于“0”且 sw等于 o,则说明这些二进制位无需取反,因此相应的流程图中空 (4)处的操作应为空操作。当某个 BITi的值等于 “1”且 SW的值等于 0,则说明找到了从右边数的第 1个 “1”,此时应将 SW的值置为非 “0”,因此流程图中空 (2)处的操作为 sw赋值。 最后,应将其余各位取反,即 BITi等于 1时,在流程图中的空 (3)处将其赋值0;反之,则在流程图中的空 (5)处将其赋值 1。 2 【正确答案】 (1)j%2,及其等价形式 (2)i+=2,及其等价形式 (3)tag

34、 2,或 tag=3或 tag =3,及其等价形式 (4) 9 (5) 45 【试题解析】 本题考查的是交换排序。 根据题目中给出的排序过程可知 ,第一趟比较的是 a0与 a1、 a2与 a3、 a4与 a5等,第二趟比较的是 a1与 a2、 a3与 a4、 a5与 a6等,第三趟从 a0与 a1开始进行比较,第四趟再从 a1与 a2开始,因此,内循环控制变量 i的初始值随着外循环控制变量, i的每一次变化而在 0和 1之间交替取值,因此函数中的空 (1)处应填入 “j% 2”或其等价形式。显然, i的递增量应为 2,空 (2)处应填入“i+=2”或其等价形式。 排序时,只要在内循环中发生了元

35、素的交换,则 tag的值被置为 0,通过 外循环中的 “tag+”操作又会将其变为 1;若在内循环中始终没有进行过相邻元素的交换处理,则 tag的值将在外循环中不断递增,因此,当 tag达到一定值时排序过程即可终止。 下面,考查相邻两趟没有发生交换的排序过程。 对于偶数下标,则有 a0a1、 a2a3、 a4a5等等。 对于奇数下标,则有 a1a2、 a3a4、 a5a6等等。 综上,则有 a0a1a2a3an -2an-1。因此,函数中的空 (3)处 应填入 “tag =3”或其等价形式。 对于 10个元素的数组 a,当元素已经呈非递减排列时,先进行了 aO与 a1、a2与 a3、 a4与

36、a5、 a6与 a7、 a8与 a9的比较,又进行了 a1与 a2、a3与 a4、 a5与 a6、 a7与 a8的比较,未发生交换,因此共进行 9次元素间的比较后完成排序。相反地,当排序前元素已经呈递减排列时,要进行最多次数的比较才能完成排序,同时每次比较操作都伴随着交换处理。从题目中外循环次数为 10可知,每相邻两趟内循环进行 9次比较,所以总的比较次数为 45。 3 【正确答案】 (1)p&k i,及其等价形式 (2)!p- next,及其等价形式 (3)q- next (4)prep- next (5)q- next=p 【试题解析】 本题考查的是指针运算和链表操作。 在函数中,通过语句

37、 “p=La-next; prep=La; ”可知,若链表不空,则 p指向链表的第一个元素结点且 prep直接指向其前趋结点,同时计数器 k的值为 1。因此,只要计数器 k的值小于 i且链表长度大于 i(即 p指向的结点存在 ),则指针 p将随着 while循环,向 表尾方向扫描下去。因此,函数中空 (1)处应填入 “p&k i”或其等价形式。显然,当找到第 i个结点时, p指向该结点,且 prep指向其前趋结点,如下图 (a)所示。因此, p-next为空指针表明第 i个元素结点已经在表尾,无需移动,即函数中空 (2)处应填入 “!p- next”。反之,若第 i个结点不是表尾,则可通过 “

38、prep- next=p- next操作将其从链表中删除,如下图 (b)所示。 为了将 p指向的结点链接到表尾,则需找到表尾结点并令 q指向该结点 (通过函数中的注释得知 ),此时 q- next应等于空 指针。因此空 (3)处应填入 “q- next”。由于在空 (4)处将 p指向的结点从链表中删除,因此,空 (5)处应将其接在表尾,即填入 “q- next=p”。 4 【正确答案】 (1)(h-9)*60+m,及其等价形式 (2)time+Rk.dch-a*20 其中 ch-a可以表示为 ch-97, Rk可以表示为 RRk.no (3)Rrq.num=Rj num & Rt.time R

39、j.time,及其等价形式 (4)t!=i及其等价形式 (4)Ri,及其等 价形式 【试题解析】 本题考查的是通过阅读程序说明,在限定条件下进行程序设计的能力。 在函数 Statistic()中, h:m表示竞赛选手提交解答的时间。根据注释,空 (1)处用于计算以分钟为单位的答题时间。用提交时间减去竞赛开始时间,就是解答一个题目所用的时间,即空 (1)处填入: (h-9)*60+m。 统计过程中采用小写英文字母表示题目的编号,因此语句 if(isupper(ch)ch=a+ch-A; 用于将题目编号 ch统一为小写字母。 函数中, while循环用于 统计每个选手提交答案的情况,采用了直接存取

40、的方法,即 k号选手的数据记录在下标为 k的数组元素中,即 k号选手提交编号为 ch的题目情况用 Rk dch-a和 Rk.ach-a记录,其中, dch-a用于记录提交编号为 ch的题目的错误答案次数, ach-a则用于记录编号为 ch的题目是否已经提交正确答案,以防止一个正确答案被同一名选手反复提交造成重复统计,相应的语句为 if(Rk.ach-a =1)continue; 因此, “Rk ach-a=1; ”表示选手 k首次正确提交了题目 ch的解答,同时记录他解答正确的题目数加 1,即 “Rk).num+; ”。已正确解答的题目总用时,由解答用时和罚时两部分组成,因此空 (2)处应填入

41、 “time+Rk.dch-a*20”。 完成统计后,排名所需的数据都记录在结构体数组 R的成员 NO、 nurn和 time中,数组成员 d和 a就不再有用了。 根据输入数据完成统计之后,需要进行排序。函数 Statistic()中采用的是简单选择排序, n个元素进行简单选择排序的基本思想是:通过 n-1(1in)次元素值之间的比较,从 n-i+1个元素中选出值最小的元素 (用 t记录该最小元素在数组中的下标 ),并和第 i个元素进行交换,当 i等于 n时所有记录有序排列。根据排序规则,完成题目数量相同时,总用时少者排名靠前,因此空 (3)处应填入“Rt.num=Rj.num & Rt.ti

42、me Rj.time”,显然,若第 i个元素本来就是最小元素,则无需交换,即空 (4)处填入 “t!=i”或其等价形式。 输出排名情况时,应注意并列名次问题。下面的代码段用于输出排名情况。 k=-1; R0=R1; for(i=1; i =Maxlndex; i+) /*严输出排名情况 */ if(Ri.num 0) if(Ri.num!=R0.num|Ri.time!=R0 time) k+; R0= (5) ; printf(“%d: %3d %4d %5dn“,k,Ri.no,Ri.num,Ri time); /*if*/ 显然, k表示选手的名次。 R0记录的是 Ri-1的值,因此,排

43、序后相邻的两个记录若完成题目数和总用时相同,则输出相同的名次号 (即 k不变 )。因此,空 (5)处填入 “Ri。 5 【正确答案】 (1)Asc(“A“)+i-1,或 64+i,及其等价形式 (2)(h-9)*60+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) 【试题解析】 本题考查的是 Visual Basic中常用控件、基本函数的使用和基本的程序设计能力。 由于题目编号是确定的,输入时,题目编号将在组合列表框中进行选

44、择。因此,下 面的代码将题目编号预先加入组合列表框。 Fori=1 To 8 Combol.Addltem ChrL( (1) ) Next 所以空 (1)处应填入 “Asc(”A”)+i-1”或 “Asc(“a“)+i-1)”,根据程序中的注释和计算题目号 m的语句 “m=Asc(ch)-Asc(“A“)”可知,组合框中应填入大写字母。 以 h:m表示竞赛选手提交解答的时间时,根据注释,空 (2)处用于计算以分钟为单位的答题时间。用提交时间减去竞赛开始时间,就是解答一个题目所用的时间,即空 (1)处填入: (h-9)*60+m。 当在组合框中选择了某个数据项时,属性 Text表示当前选中的数

45、据项内容,因此根据 ch在运算中所起的作用,空 (3)用于取在组合框中选择的题目编号,应填入“Combol Text”。 复选框的属性 Value,其值为 0表示未选中 (默认 ), 1表示选中, 2表示禁 用。在这里,复选框 (检查框 )Chk_yn的 Value属性值等于 0表示解答错误,为 1表示解答正确,因此空 (4)填入 “Value。 已正确解答的题目总用时,由解答用时和罚时两部分组成。显然,空 (5)所在语句用于累计已正确解答的题目的总用时,因此填入 “time+R(k).d(m)*20”或其等价形式。 6 【正确答案】 (1)False (2)True (3)SetFocus

46、(4)Delete (5)Update 【试题解析】 本题考查的是 Visual Basic的文本框、命令按钮等基本控件和 基本数据控件的使用。 程序代码中自定义过程 enableop()的作用是集中设置窗体中文本框和命令按钮的 Enabled属性。 窗体装载事件的代码如下: Private Sub Form_Load() Call enableop(False) Datal.Refresh If Datal.Recordset.RecordCount=0 Then Cmd_del.Enabled=False: Cmd_modify.Enabled= (1) End If End Sub 其中

47、,调用 enableop(False)使得各文本框的数据不可修改,同时 “确定 ”和 “取消 ”按钮不可操作,因为这两个按钮是为了确认增加、删除、修改操作而设置的。当数据控件 Datal绑定后, Datal.Recordset.RecordCount表示数据表中的记录数目,当数据表为空时,自然也不能进行删除和修改操作,所以空 (1)处应填入 “False”。 单击 “增加 ”按钮事件的代码如下: Private Sub Cmd add Click() 单击 “增加 ”按钮的代码 Call enableop( (2) ) Daml Recordset.AddNew 在数据库表中添加一个新记录 Txt_name (3) End Sub 当单击 “增加 ”按钮时,表示要在数据表中增加一条记录。题目要求在按下 “增加 ”或 “修改 ”后方可以编辑记录内容,同时 “增加 ”、 “删除 ”、 “修改 ”和 “退出 ”按钮变为不可操作状态,所以通过查看 enable

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