问答题

试题二(15 分,每空3 分) 阅读下列函数说明和C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 [函数说明] 函数sort(int a[],int n)的功能是对数组a 中的a[0]~a[n-1]这n 个元素进行排序。排序过程如下:第一趟对所有的偶数下标p,比较a[p]和a[p+1],若a[p]>a[p+1],则将两者交换;第二趟对所有的奇数下标q,比较a[q]和a[q+1],若a[q]>a[q+1],则将两者交换;第三趟对偶数下标,第四趟对奇数下标,...,依次类推,直至整个数组元素有序排列为止。 [函数] void sort(int a[],int n) { int i,j,t,tag=1; for(j=0; ja[i+1]) {t=a[i]; a[i]=a[i+1];a[i+1]=t; tag=0;} } tag++; if ( (3) ) break; } } 对包含十个元素的数组a 采用上述方法排序时,元素间的比较次数最少为 (4) 次,最多为 (5) 次。

【参考答案】

(1)j%2,及其等价形式(2)i+=2,及其等价形式(3)tag〉2,或tag==3 或tag〉=3,及其等价形式(4......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
试题五(15 分,每空3 分)阅读以下应用说明及Visual Basic 程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[应用说明]某单位举办了一场知识竞赛,有300 名选手参加竞赛,依次从1~300 为选手编号。竞赛时间为9:00~11:00。8 道竞赛题目依次从“A”~“H”编号,选手可按任意次序答题,每完成一道题目,可立即提交答案。若答案正确(Y),则选择其他题目进行解答,否则,可继续做该题目或选择其他题目进行解答,直至竞赛结束。选手提交答案的情况及判定结果由专人即时录入,录入数据包括提交答案的时间、选手编号、题目编号(A~H)、是否正确(Y N)。对竞赛情况进行统计和排名的规则如下:1.若选手X 在竞赛时提交的题目P 解答正确,则解答该题目所用时间如下计算:解答题目P 的用时=提交题目P 正确的时间 - 竞赛的开始时间+罚时罚时=提交题目P 错误解答的次数×20例如:设14 号选手在10:27 提交了题目A 的正确解答,则该选手正确解答该题目所用时间为87 分钟,由于他在09:37 和09:52 两次提交了题目A 的错误解答,因此罚时为2×20=40分钟,所以14 号选手解答题目A 的用时=87+40=127(分钟)。2.已经提交正确答案的题目再次提交时不作计算。3.竞赛结束时,选手的总用时为所有解答正确的题目用时累加所得,解答不正确的题目不计时。4.排名时,完成题目数量多者排名靠前;若完成的题目数相同,则用时少者排名靠前;若完成的题目数和所用时间均相等,则名次相同;完成题目数为0 的选手不参加排名。本应用程序的运行窗口如下图所示:窗口中的两个文本框为Txt_time 和Txt_player,分别用于录入提交答案的时间和选手编号。组合列表框Combo1 提供题目编号(A~H),录入时从中选择。检查框Chk_yn 用于输入解答是否正确信息。当单击“确定”按钮(Cmd_comfirm)时,录入的提交信息加入列表框List1 中,排名情况在列表框List2 输出。单击“关闭”按钮时退出应用程序。在开发过程中,需要编写的部分程序代码如下:[程序代码]Private Type Infono As Integer ’选手编号num As Integer ’完成的题目数量time As Integer ’完成题目的总用时d(8) As Integer ’d[i]用于记录提交第i 个题目错误答案的次数a(8) As Boolean ’a[i]用于记录第i 个题目是否已经提交正确答案End TypeDim R(301) As Info ’R[j]用于统计编号为j 的选手提交答案的情况Dim MaxIndex As Integer ’MaxIndex 记录提交答案的选手中编号最大者Private Sub Form_Load()For i = 1 To 8Combo1.AddItem Chr( (1) )NextCombo1.Text = Combo1.List(0): Txt_time.Text = : Txt_player.Text = For i = 1 To 300R(i).num = 0: R(i).time = 0: R(i).no = iFor j = 1 To 8R(i).d(j) = 0: R(i).a(j) = FalseNext j, iEnd SubPrivate Sub Cmd_confirm_Click()Dim h, m, k, time As Integer, ch, pass, s1 As Stringk = InStr(Txt_time.Text, : ): If k 11 Or h = 11 And m > 0 Or m >= 60 Then GoTo error1time = (2) ’计算答题时间,以分钟为单位If Txt_player.Text 300 Then GoTo error1ch = (3) ’取题目编号pass = IIf(Chk_yn. (4) = 0, N , Y )s1 = Txt_time.Text + Space(4) + Txt_player.Texts1 = s1 + Space(10 - Len(Txt_player.Text)) + ch + Space(8) + passList1.AddItem s1k = Val(Txt_player.Text) ’k 为选手编号R(k).no = k ’编号为k 的选手的提交信息记录在下标为k 的数组元素中If k > MaxIndex Then MaxIndex = km = Asc(ch) - Asc( A )If pass True Then ’已经提交正确的题目的解答不再计算R(k).a(m) = True: R(k).num = R(k).num + 1R(k).time = R(k).time + (5)Call Statistic ’调用过程Statistic 进行实时排名和输出End IfExit Suberror1: MsgBox 录入信息有误! , vbOKOnlyEnd Sub