-
全部
- 2.3周而复始的循环-教科版(2019)高中信息技术必修一练习(原卷版).doc--点击预览
- 2.3周而复始的循环-教科版(2019)高中信息技术必修一练习(解析版).doc--点击预览
文件预览区
|
|
资源描述
2.3 周而复始的循环周而复始的循环-教科版(教科版(2019)高中信息技术必修一练)高中信息技术必修一练 习习 学校:_姓名:_班级:_考号:_ 一、选择题一、选择题 1下面的程序段运行后的结果为( ) s=1 for i in range(1,6,2): s=s+i print(s) A15B10C12D9 2某算法的部分流程图如下图所示,输入 s=11200,执行这部分流程后,输出 m 和 n 的值分别是( ) A14 4 B21 4 C22 5 D42 5 3有两个 VB 程序段,如下所示: 已知程序段中两处内容相同,数组元素 a(1)到 a(10)的值依次为: 6,43,21,78,33,16,80,45,12,90,执行“程序段 1”后,数组元素 a(1)a(10)的 值依次为 80,78,90,45 ,43,33,21,16,12,6,则下列说法正确的是() A和处的填空为 7 B两程序段的比较次数不一样,交换次数一样 C执行完程序段 2 后,数据 6 移动到了 a(10) D两段程序的得到的运行结果相同 4有如下 VB 程序段: i = 1 Do While i a(i-1) Then End If If k=1 Then s=s+1 Nexti Textl.Text=Str(s) 方框中的代码由以下三部分组成: k=0 k=k+1 Else 代码顺序正确的选项是( ) ABCD 6有如下 VB 程序段: Const n= 10 Dim a(1 To n) As Integer , b(1 To n) As Integer For i = 1 To n b(i) = i Next i For i = 2 To n j = i - 1 t = b(i) Do While a(b(j) a(t) b(j + 1) = b(j) j = j - 1 If j = 0 Then Exit Do Loop b(j + 1) = t Next i 若数组 a 中的数据依次为:69,16,44,17,34,46,10,29,37,51 ,执行程序后, b(1)b(10)的值为( ) A3 5 4 10 1 9 8 6 7 2B7 2 4 8 5 9 3 6 10 1 C5 8 2 1 4 7 3 9 10 6D1 6 2 4 8 9 7 10 3 5 二、操作题二、操作题 7出列顺序有 10 个人,编号分别为 1,2,310 按顺时针方向围坐成一圈,每次 随机产生一个数 m,m 的范围为3,7的随机奇数,从第 10 个人开始逆时针报数,当 报到 m 的人出列,圈内剩下的人,重新产生随机数 m,重新开始报数,如此下去,直 到所有人出列为止。如:若每次参数的随机数 m 都为 5,从第 10 个开始报数,依次出 列的为 6-1-5-9-2-3-10-7-4-8 小李编写了如下程序求解 10 个人的出列顺序。程序运行界面如图 1 所示,点击求解按 钮后,在 Textl 中输出出列顺序,在 Text2 中显示随机数据的值。 (1)在划线出填写正确的代码 Private Sub Command1 _Click() Dim ld(1 To 10) As Boolean, i As Integer, j As Integer Dim rs As Integer, C As Integer, m As Integer Randomize For i=1 To 10 ld(i) = True数组元素为 True 表示第 i 人当前在队列中 Next i c=0:rs=10 _ m =Int(Rnd*3)*2+3 Do While rs 0 If ld(i) = True Then _ If c=m Then ld(i) = False Text1.Text = Text1.Text + Str(i) _ c=0 End If End If i =i-1 If _Then i=10 Loop End Sub (2)加框处两语句互换下顺序,会不会对出列顺序产生影响_(选填:会/不会) 。 8求不大于 n 的五位正整数中,满足高两位与低两位相同,且能被 3 除余 2 的所有数 之和。 (1)本题适用的算法是( ) ,此算法的基本实现方法是( ) 。 A枚举算法,循环中嵌套循环 B查找算法,循环中嵌套分支 C枚举算法,循环中嵌套分支 D查找算法,循环中嵌套循环 (2)设 x 为五位正整数,以下检验条件的分析,正确的是( ) 。 Ax 100 = x mod 100 and x mod 3=2 Bx 1000 = x mod 100 and x mod 3=2 Cx 100 = x mod 1000 and x mod 3=2 Dx 1000 = x mod 1000 and x mod 3=2 (3)请编写程序,完成题目要求的功能。 9小奕同学基于排序算法设计了一个数字矩阵排序的程序。程序界面如下图所示,在 文本框中输入矩阵大小,点击“生成”按钮 Command1,在左侧列表框 List1 中输出一 个长宽均为指定大小的随机整数矩阵,随机整数范围为1,99。点击“排序”按钮 Command2,结果输出在右侧列表框 List2 中,奇数行从左到右依次递增,偶数行从右 至左依次递增,且保持输出矩阵的长宽不变。 (1)实现上述功能的 VB 程序如下,显示数据用的 additem 是一种_(单选,填 字母:A属性名/B事件名/C方法名/D过程名)。 (2)请在划线处填入合适的代码。 (3)程序中加框处代码有错,请改正。 Dim a (1 To 100) As Integer Dim n As Integer Function dq (s As String,L As Integer) As String 自定义对齐函数 Rem 在输入的字符串 s 前加若干空格,输出长度为 L 的字符串,代码略 End Function Private Sub Command1_Click()生成数字矩阵 随机生成 n2 个数字,存储在数组 a 中,代码略 以一行 n 个,共 n 行的格式显示在 List1 中,代码略 End Sub Private Sub Command2_Click数字矩阵排序 Dim i As Integer,k As Integer,j As Integer,s As String Dim f As Boolean List2.Clear f = True For i = 1 To n2 Step n s= For j = i To k=n2 Do While If a(k) sum Then sum = temp + hsum(i) length = i - begin k = i ElseIf temp + hsum(i) = sum And_ Then length = i - begin k = i End If If temp + hsum(i) 0 Then begin = i temp = 0 Else temp = temp + hsum(i) End If Next i ks =( +_+ , + Str(xy(2) + ) 开 始 位 置 js =( + Str(k + xy(1) - 1) + , + Str(xy(4) + ) 结束位置 Label3.Caption = 最大子矩阵和为 : + Str(Sum) Label4.Caption = 子矩阵中的元素个数为: + Str(length * (xy(4) - xy(2) + 1) Label5.Caption = 子矩阵位置为: + ks + , + js End Sub 11使用 Python 自身提供的 IDLE 集成开发环境录入以下代码及调试 运行,检测结果。 # 鸡兔同笼 for x in range(1,23): y=35-x if 4*x+2*y=94: print(兔子有%s 只,鸡有%s 只%(x,y) 特别提示:代码录入完毕,调试运行,检测错误,讨论错误原因,上网查找错误格式 的处置办法,直至能正确输出结果。 12请编写 Python 程序,实现如下功能需求: 1)程序运行后,给出文字提示:“请输入一个正整数:” 2)输入一个整数 n 按回车后,程序输出从 1-n 所有整数中既是 3 的倍数又是 5 的倍数 的数。 3)不要超过 5 行代码。 程序运行举例: 13某考试的多选题有“A、B、C、D、E”5 个答案选项。阅卷的评分标准为:“全 部选对的得 2 分,选对但不全的得 1 分,不选或有选错的得 0 分” 。阅卷算法描述如下: 例如,标准答案为“ABE” ,则对应得分表如下所示。 学生答案ABEABAEBEABEAC. 字符串1100111000100010100110000010000000110100. 十进制数 (x) 2524179168120. ans(x)211111100 小温依据上述描述设计了“多选题阅卷”的 VB 程序,实现如下功能:在文本框 Text1 中输入标准答案(大写字母) ,先单击“初始化”按钮 Command1,在数组 ans 中 生成所有答案组合对应 的分值,然后单击“阅卷”按钮 Command2,从数 据 库中读取学生的答案并进行阅卷,在列表框 List1 中显示得分结果。程序运行界面如图 所示。 (1)若标准答案为“ACD” ,则数组元素 ans (18)的值为 (2)请在划线处填入合适的代码。 Dim ans(0 To 31) As Integer Private Sub Command1_Click() Dim b(0 To 4) As Integer Dim s As String, c As String, sum As Integer, k As Integer 初始化数组 ans 和数组 b,各元素的初始值均为 0。代码略 s = Text1.Text:k = Len(s) For i = 1 To k c = Mid(s, i, 1) b(Asc(c) - 65) = 2 (69 - Asc(c) Next i For i = 0 To 4 If b(i) 0 Then ans(b(i) = 1 sum = End If Next i ans(sum) = 2 当标准答案含 3 个及以上选项时,学生答案选其中 2 个选项可得 1 分 i = 0 Do While k = 3 And i = 4 For j = i + 1 To 4 If b(i) * b(j) 0 Then ans(b(i) + b(j) = 1 Next j i = i + 1 Loop 当标准答案含 4 个及以上选项时,学生答案选其中 3 个选项可得 1 分 i = 0 Do While k = 4 And i = 97 Then a(t) = a(t) + 1 sum(t) = sum(t) + sScore(i) Next i For i = 1 To nc ave(c(i) = Int(sum(c(i) / b(c(i) * 100 + 05) / 100 Next i For i = 1 To nc - 1 For j = nc To i + 1 Step -1 If Then t = c(j): c(j) = c(j - 1): c(j - 1) = t End If Next j Next i For i = 1 To nc List2.AddItem Str(c(i) + + Str(b(c(i) + + Str(a(c(i) + + Str(ave(c(i) Next i End Sub Private Sub Form_Load() 链接数据库,代码略 recCount = 0 Do While Not rsEOF recCount = recCount + 1 sClass(recCount) = rs.Fields(class) sName(recCount) = rs.Fields(name) sScore(recCount) = rs.Fields(score) rs.MoveNext Loop 将数据显示在列表框 List1 中,代码略 End Sub 三、填空题三、填空题 15以下流程图描述的算法,执行结果是_。 16如图所示,这是打印九九乘法表的程序,请你完善程序。 Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To _ For j = 1 To _ Print j; *; i; =; i * j; Next j Print 换行 Next i End Sub 2.3 周而复始的循环-教科版(2019)高中信息技术必修一练 习 学校:_姓名:_班级:_考号:_ 一、选择题 1下面的程序段运行后的结果为( ) s=1 for i in range(1,6,2): s=s+i print(s) A15B10C12D9 【答案】B 【解析】 【详解】 本题主要考查程序的运行。for 循环中,变量 i 的变化是 1,3,5,7,当 i=7 时退出循 环,此时 s 的值为,s=1+1+3+5=10,故本题选 B 选项。 2某算法的部分流程图如下图所示,输入 s=11200,执行这部分流程后,输出 m 和 n 的值分别是( ) A14 4 B21 4 C22 5 D42 5 【答案】C 【解析】 【分析】 【详解】 本题主要考查循环结构流程图的读取。 第一次循环:m=0*3+11200 mod 10=0+0=0 n=1 s=1120010=1120 第二次循环:m=0*3+1120 mod 10=0+0=0 n=2 s=112010=112 第三次循环:m=0*3+112 mod 10=0+2=2 n=3 s=11210=11 第四次循环:m=2*3+11 mod 10=6+1=7 n=4 s=1110=1 第五次循环:m=7*3+1 mod 10=21+1=22 n=5 s=110=0 当 s0 不成立时,跳出循环,输出 m=22 n=5,因此 C 选项正确。A、B、D 选项均不 正确。 3有两个 VB 程序段,如下所示: 已知程序段中两处内容相同,数组元素 a(1)到 a(10)的值依次为: 6,43,21,78,33,16,80,45,12,90,执行“程序段 1”后,数组元素 a(1)a(10)的 值依次为 80,78,90,45 ,43,33,21,16,12,6,则下列说法正确的是() A和处的填空为 7 B两程序段的比较次数不一样,交换次数一样 C执行完程序段 2 后,数据 6 移动到了 a(10) D两段程序的得到的运行结果相同 【答案】A 【解析】 【详解】 本题考查冒泡排序。根据题干,执行“程序段 1”后,数组元素 a(1)a(10)的值依次 为 80,78,90,45 ,43,33,21,16,12,6,可知 a(10)-a(4)实现排序,故整个排 序执行了七趟。根据程序段 1,双重 for 循环的内循环 for j=1 to 10-i,这是一个下 沉的排序,对整个程序段总共要执行七趟,那么 i 的变化是 1-7,故外循环填入 7。选 项 A 正确。两个程序段都执行七趟,比较次数一样。执行完程序段 2 后,数据 6 移动 到了 a(8)。故本题选 A。 4有如下 VB 程序段: i = 1 Do While i a(i-1) Then End If If k=1 Then s=s+1 Nexti Textl.Text=Str(s) 方框中的代码由以下三部分组成: k=0 k=k+1 Else 代码顺序正确的选项是( ) ABCD 【答案】B 【解析】 【详解】 本题考查的是 VB 循环、选择语句。阅读程序可知,k 表示每个升序段中元素的个数, s 是表示升序段的个数。由 If a(i)a(i-1) Then 可知,接下来升序段中元素的个数增加 1,否则为统计下一个升序段中元素的个数做准备即 k=0。故代码顺序为:。 选项 B 正确。 6有如下 VB 程序段: Const n= 10 Dim a(1 To n) As Integer , b(1 To n) As Integer For i = 1 To n b(i) = i Next i For i = 2 To n j = i - 1 t = b(i) Do While a(b(j) a(t) b(j + 1) = b(j) j = j - 1 If j = 0 Then Exit Do Loop b(j + 1) = t Next i 若数组 a 中的数据依次为:69,16,44,17,34,46,10,29,37,51 ,执行程序后, b(1)b(10)的值为( ) A3 5 4 10 1 9 8 6 7 2B7 2 4 8 5 9 3 6 10 1 C5 8 2 1 4 7 3 9 10 6D1 6 2 4 8 9 7 10 3 5 【答案】B 【解析】 【分析】 【详解】 本题主要考查 VB 中数组及循环结构的使用。 “Exit Do”用以跳出 Do 循环,Do 循环 的循环条件为“a(b(j) a(t)” ,由题意可知为“a(b(i-1) a(b(i)” ,程序执行中数组 b 变化过程为:2,1,3,4,5,6,7,8,9,102,3,1,4,5,6,7,8,9,10 2,4,3,1,5,6,7,8,9,102,4,5,3,1,6,7,8,9,10 2,4,5,3,6,1,7,8,9,10,7,2,4,5,3,6,1,8,9,10 7,2,4,8,5,3,6,1,9,107,2,4,8,5,9,3,6,1,10 7,2,4,8,5,9,3,6,10,1。故 B 选项正确。其余选项均不符合题意。 二、操作题 7出列顺序有 10 个人,编号分别为 1,2,310 按顺时针方向围坐成一圈,每次 随机产生一个数 m,m 的范围为3,7的随机奇数,从第 10 个人开始逆时针报数,当 报到 m 的人出列,圈内剩下的人,重新产生随机数 m,重新开始报数,如此下去,直 到所有人出列为止。如:若每次参数的随机数 m 都为 5,从第 10 个开始报数,依次出 列的为 6-1-5-9-2-3-10-7-4-8 小李编写了如下程序求解 10 个人的出列顺序。程序运行界面如图 1 所示,点击求解按 钮后,在 Textl 中输出出列顺序,在 Text2 中显示随机数据的值。 (1)在划线出填写正确的代码 Private Sub Command1 _Click() Dim ld(1 To 10) As Boolean, i As Integer, j As Integer Dim rs As Integer, C As Integer, m As Integer Randomize For i=1 To 10 ld(i) = True数组元素为 True 表示第 i 人当前在队列中 Next i c=0:rs=10 _ m =Int(Rnd*3)*2+3 Do While rs 0 If ld(i) = True Then _ If c=m Then ld(i) = False Text1.Text = Text1.Text + Str(i) _ c=0 End If End If i =i-1 If _Then i=10 Loop End Sub (2)加框处两语句互换下顺序,会不会对出列顺序产生影响_(选填:会/不会) 。 【答案】 i=10 c=c+1 rs=rs-1 i=0 不会 【解析】 【详解】 本题考查 VB 综合能力。 (1)初始化 i 的值,填入 i=10。 (2)报数数量加 1,填入 c=c+1。 (3)出列后总人数减 1,故填入 rs=rs-1。 (4)当 i=0 时候,代表转到了最后 一人,故 i=10。 (5)对出列顺序没有影响。 8求不大于 n 的五位正整数中,满足高两位与低两位相同,且能被 3 除余 2 的所有数 之和。 (1)本题适用的算法是( ) ,此算法的基本实现方法是( ) 。 A枚举算法,循环中嵌套循环 B查找算法,循环中嵌套分支 C枚举算法,循环中嵌套分支 D查找算法,循环中嵌套循环 (2)设 x 为五位正整数,以下检验条件的分析,正确的是( ) 。 Ax 100 = x mod 100 and x mod 3=2 Bx 1000 = x mod 100 and x mod 3=2 Cx 100 = x mod 1000 and x mod 3=2 Dx 1000 = x mod 1000 and x mod 3=2 (3)请编写程序,完成题目要求的功能。 【答案】 (1) C (2) B (3) Dim x As Long, s As Double, n As Long n = val(InputBox(输入) s = 0 For x = 10000 To n Step 1 If x 1000 = x Mod 100 And x Mod 3 = 2 Then s = s + x End If Next x Print s 【解析】 【详解】 本题考查 VB 综合能力。 (1)求不大于 n 的五位正整数中,满足高两位与低两位相同, 且能被 3 除余 2 的所有数之和适合采用枚举算法,枚举算法是指从所有候选答案中去 搜索正确的解,使用该算法需要满足两个条件,所以在代码中需要分支结构。故选 C。 (2)x 1000 = x mod 100 and x mod 3=2 可以判断高两位与低两位相同,且能被 3 除 余 2 的整数,故选 B。 (3)根据题目意思,完成代码。 9小奕同学基于排序算法设计了一个数字矩阵排序的程序。程序界面如下图所示,在 文本框中输入矩阵大小,点击“生成”按钮 Command1,在左侧列表框 List1 中输出一 个长宽均为指定大小的随机整数矩阵,随机整数范围为1,99。点击“排序”按钮 Command2,结果输出在右侧列表框 List2 中,奇数行从左到右依次递增,偶数行从右 至左依次递增,且保持输出矩阵的长宽不变。 (1)实现上述功能的 VB 程序如下,显示数据用的 additem 是一种_(单选,填 字母:A属性名/B事件名/C方法名/D过程名)。 (2)请在划线处填入合适的代码。 (3)程序中加框处代码有错,请改正。 Dim a (1 To 100) As Integer Dim n As Integer Function dq (s As String,L As Integer) As String 自定义对齐函数 Rem 在输入的字符串 s 前加若干空格,输出长度为 L 的字符串,代码略 End Function Private Sub Command1_Click()生成数字矩阵 随机生成 n2 个数字,存储在数组 a 中,代码略 以一行 n 个,共 n 行的格式显示在 List1 中,代码略 End Sub Private Sub Command2_Click数字矩阵排序 Dim i As Integer,k As Integer,j As Integer,s As String Dim f As Boolean List2.Clear f = True For i = 1 To n2 Step n s= For j = i To k=n2 Do While If a(k) = j+1 f = Not f (3) i+n-1 【解析】 【详解】 本题考查 VB 综合能力。 (1)additem 是一种方法名。 (2)第一空,DO While 循环是冒 泡排序的内循环,根据题干,每次排序排第 i 行的 n 个数据,从 a(j)到 a(j+n-1)的排 序,故填入 k=j+1。 (3)第二空,f 代表奇偶行,奇数行 f 为 True,偶数行反之,故 填入 f=Not f。 (4)每次排序排第 i 行的 n 个数据,加框处改为 i+n-1。 10求最大连续子矩阵和。给出一个矩阵,序列元素有正整数、0、负整数,在矩阵中 限定一块区域,并要求找到该限定区域内的一个子矩阵,使得这个子矩阵与限定区域 同宽但可能不同高,且包含的所有元素之和为限定区域矩阵中最大值,在和最大的前 提下还要求该子矩阵包含的元素个数最多。 算法描述如下: (1)从第一行开始向下进行累加,累加和若大于之前的最大和,则记录此时的最大和 及结束位置; (2)若累加和等于之前的最大和,但元素个数大于之前的最大和的元素个数,则记录 此连续子矩阵的结束位置; (3)若累加和小于 0,则重新开始记录; (4)若有符合条件的多个连续子矩阵,则输出最先找到的子矩阵。 小俞编写了一个实现该功能的 VB 程序,窗体加载时生成 m*n 个序列数据,依次 存放在数组 a,并显示在列表框 List1 中,在文本框 Text1 中输入该矩阵限定区域的 左上角位置,在文本框 Text2 中输入右下角位置,单击“计算”按钮 Command1 后, 找出连续和最大的子矩阵,在标签 Label3 上显示最大连续子矩阵和,在 Label4 上显 示该连续子矩阵的元素个数,在 Label5 上显示该连续子矩阵开始与结束位置。程序 运行界面如图所示。 (1)在设计程序界面时,要清空文本框中的显示内容,应修改文本框的_ 属性 (2)VB 程序代码如下,请在划线处填入合适的代码。 Const m = 12: Const n = 6 Dim a(1 To m * n) As Integer Private Sub Form_Load() 生成 m*n 个数据,并显示在列表框 List1 ,代码略 End Sub Private Sub Command1_Click() Dim i As Integer,j As Integer,k As Integer,temp As Integer Dim length As integer,begin As Integer ,sum As Integer Dim ks As String,js As String Dim xy(1 to 4) As Integer , hsum(1 to m*n) As Integer 读取文本框 Text1 的数值分别存储到数组 xy(1)、xy(2), 读取文本框 Text2 的数值分 别存储到数组 xy(3)、xy(4),xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,代码略 For i = 1 To xy(3) - xy(1) + 1 hsum(i) = 0 Next i 求限定区域内每行数据之和 For i = 1 To xy(3) - xy(1) + 1 For j = 1 To_ hsum(i) = hsum(i) + a(xy(1) + i - 2) * n + xy(2) + j - 1) Next j Next i 找出最大连续之矩阵和 temp = 0: sum = 0: length = 0: begin = 0 For i = 1 To xy(3) - xy(1) + 1 If temp + hsum(i) sum Then sum = temp + hsum(i) length = i - begin k = i ElseIf temp + hsum(i) = sum And_ Then length = i - begin k = i End If If temp + hsum(i) length Str(k - length + xy(1) 【解析】 【详解】 本题考查 VB 综合能力。 (1)在设计程序界面时,要清空文本框中的显示内容,应修改 文本框的 text 属性。 (2)xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,内循 环表示限定区域有多少列,故填入 xy(4) - xy(2) + 1。 (3)根据题干若累加和等于 之前的最大和,但元素个数大于之前的最大和的元素个数,则记录此连续子矩阵的结 束位置,填入 i-begin length。 (4)开始位置表示为 Str(k - length + xy(1)。 11使用 Python 自身提供的 IDLE 集成开发环境录入以下代码及调试 运行,检测结果。 # 鸡兔同笼 for x in range(1,23): y=35-x if 4*x+2*y=94: print(兔子有%s 只,鸡有%s 只%(x,y) 特别提示:代码录入完毕,调试运行,检测错误,讨论错误原因,上网查找错误格式 的处置办法,直至能正确输出结果。 【答案】错误 1:兔子 4 只腿,最多只能是 23 只,而 range(1,23)只取到 22,没取到 23,故应改为: range(1,24) 错误 2:缩进错误,y=35-x、if 4*x+2*y=94:是 for 语句中的语句块,应缩进。print(兔 子有%s 只,鸡有%s 只%(x,y)是 if 语句中的语句块,应缩进。 【解析】 【详解】 本题考查的是 Python 调试。本题程序错误如下: 错误 1:兔子 4 只腿,最多只能是 23 只,而 range(1,23)只取到 22,没取到 23,故应 改为: range(1,24) 错误 2:缩进错误,y=35-x、if 4*x+2*y=94:是 for 语句中的语句块,应缩进。print(兔 子有%s 只,鸡有%s 只%(x,y)是 if 语句中的语句块,应缩进。 调试完最终输出:兔子有 12 只,鸡有 23 只。 12请编写 Python 程序,实现如下功能需求: 1)程序运行后,给出文字提示:“请输入一个正整数:” 2)输入一个整数 n 按回车后,程序输出从 1-n 所有整数中既是 3 的倍数又是 5 的倍数 的数。 3)不要超过 5 行代码。 程序运行举例: 【答案】n=input(请输入一个正整数: ) n=int(n) For i in range(15,n+1,15) print(i) 【解析】 【分析】 【详解】 本题考查的是 Python 循环语句。range 函数,第一个参数表示开始,第二个参数表示 停止,第三个参数表示步长。print 缺省的话默认是换行输出。 13某考试的多选题有“A、B、C、D、E”5 个答案选项。阅卷的评分标准为:“全 部选对的得 2 分,选对但不全的得 1 分,不选或有选错的得 0 分” 。阅卷算法描述如下: 例如,标准答案为“ABE” ,则对应得分表如下所示。 学生答案ABEABAEBEABEAC. 字符串1100111000100010100110000010000000110100. 十进制数 (x) 2524179168120. ans(x)211111100 小温依据上述描述设计了“多选题阅卷”的 VB 程序,实现如下功能:在文本框 Text1 中输入标准答案(大写字母) ,先单击“初始化”按钮 Command1,在数组 ans 中 生成所有答案组合对应 的分值,然后单击“阅卷”按钮 Command2,从数 据 库中读取学生的答案并进行阅卷,在列表框 List1 中显示得分结果。程序运行界面如图 所示。 (1)若标准答案为“ACD” ,则数组元素 ans (18)的值为 (2)请在划线处填入合适的代码。 Dim ans(0 To 31) As Integer Private Sub Command1_Click() Dim b(0 To 4) As Integer Dim s As String, c As String, sum As Integer, k As Integer 初始化数组 ans 和数组 b,各元素的初始值均为 0。代码略 s = Text1.Text:k = Len(s) For i = 1 To k c = Mid(s, i, 1) b(Asc(c) - 65) = 2 (69 - Asc(c) Next i For i = 0 To 4 If b(i) 0 Then ans(b(i) = 1 sum = End If Next i ans(sum) = 2 当标准答案含 3 个及以上选项时,学生答案选其中 2 个选项可得 1 分 i = 0 Do While k = 3 And i = 4 For j = i + 1 To 4 If b(i) * b(j) 0 Then ans(b(i) + b(j) = 1 Next j i = i + 1 Loop 当标准答案含 4 个及以上选项时,学生答案选其中 3 个选项可得 1 分 i = 0 Do While k = 4 And i = 97 Then a(t) = a(t) + 1 sum(t) = sum(t) + sScore(i) Next i For i = 1 To nc ave(c(i) = Int(sum(c(i) / b(c(i) * 100 + 05) / 100 Next i For i = 1 To nc - 1 For j = nc To i + 1 Step -1 If Then t = c(j): c(j) = c(j - 1): c(j - 1) = t End If Next j Next i For i = 1 To nc List2.AddItem Str(c(i) + + Str(b(c(i) + + Str(a(c(i) + + Str(ave(c(i) Next i End Sub Private Sub Form_Load() 链接数据库,代码略 recCount = 0 Do While Not rsEOF recCount = recCount + 1 sClass(recCount) = rs.Fields(class) sName(recCount) = rs.Fields(name) sScore(recCount) = rs.Fields(score) rs.MoveNext Loop 将数据显示在列表框 List1 中,代码略 End Sub 【答案】 (1) score (2)t = sClass (i) c(nc)= t 或其他相同答案 ave(c(j) ) ave(c(j -1) ) 【解析】 【分析】 【详解】 本题考查 VB 综合能力,VB 连接数据库等(1)根据 sScore(recCount)=rs.Fields(score) 这条代码可知,学生成绩存储在数据表中,其字段名是 score。 (2)代码第一空,联系 上下代码,可知此处关于 t 的赋值,t 代表班级,故 t=sClass(i)是该空答案。 (3)代 码第二空是 c 数组赋值,c 数组中存放的是按顺寻访问到的是第几个班级,故 c(nc)=t 是该空答案。 (4)第三空是冒泡排序内循环,根据平均分降序排序,故填入 ave(c(j) ave(c(j-1)。 三、填空题 15以下流程图描述的算法,执行结果是_。 【答案】# 【解析】 【分析】 【详解】 本题考查的知识点是程序的识读。 初始值 t=0,n=1,执行输出“”语句,再执行判断 n2 表达式,不符合该条 件表达式,故执行输出“#” ,再执行 n=n+1 语句,即 n=2,再执行判断 t=1 表达式, 不符合该条件表达式,故执行判断 n2 表达式,不符合该条件表达式,故执行输出 “#” ,再执行 n=n+1 语句,即 n=3,再执行判断 t=1 表达式,不符合该条件表达式, 故执行判断 n2 表达式,符合该条件表达式,故执行输出“” , 再执行 t=1 语句, 再执行 n=n+1 语句,即 n=4;再执行判断 t=1 表达式,符合该条件表达式,故程序结束。 所以流程图的执行结果为:#。 故答案为#。
展开阅读全文
相关搜索
资源标签