[计算机类试卷]2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2004年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
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, “错误提示
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2004 年下 半年 软件 水平 考试 初级 程序员 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492471.html