2023-2024学年高一上学期选修1第二章第3节 循环结构程序

2024-07-18
| 18页
| 48人阅读
| 0人下载

内容正文:

2023-2024学年高一上学期选修1第二章第3节 循环结构程序 一、选择题 1.某VB程序功能如下:输入正整数n,单击命令按钮Command1后,则会生成一串有规律的数字序列,形式为“n  n-1  n-2 … 3  2  1  2  3 … n-2  n-1  n”。例如n=8时,生成的数字序列如图所示。代码如下: Private Sub Command1_Click() Dim n As Integer, i As Integer, s As String n = Val(Text1.Text) s = "" For i = 1 To 2 * n - 1 If i <=" n" Then ① Else ② Next i Label1.Caption = s End Sub 为实现以上功能,划线①②处应分别填写 A.①s = s &amp; Str(n - i + 1) ②s = s"&amp; Str(i - n + 1) B.①s =Str(n - i + 1) ②s = Str(i - n + 1) C.①s = s &amp; Str(i - n + 1) ②s = s&amp; Str(n - i + 1) D.①s = Str(i- n + 1) ②s = Str(n - i + 1) 2.小明在VB中定义了以下函数,功能是求a和b的最大公约数。 Function gcd(a As Integer,b As Integer) As Integer  Do While b>0 c=a Mod b a=b b=c  Loop End Function 调试中发现计算结果一直是0。经过仔细观察与分析,发现错误的原因是(  ) A.函数名有错 B.变量c没有定义 C.函数没有返回值 D.b>0应该改为b>=0 3.在VB程序中,以下程序段执行后,x的值为(    )。 x=1 y=4 Do While y>4 x=x * y y=y+1 Loop Print x A.1 B.4 C.8 D.20 4.结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构(    ) A.顺序结构 B.输入、输出结构 C.选择结构 D.循环结构 5.【加试题】某算法流程图如下图所示,该流程图对应的程序段为( ) A. B. C. D. 6.有如下VB程序段: s = 0 For i = 1 To 100 Step 3       If  i  Mod 10 = 0 Then                 s = s + i Next i 该程序段运行后,变量s中存储的是(  ) A.5050 B.1717 C.220 D.120 7.有如下VB程序段: Dim a(1 To 5)As Integer Randomize a(1)=2:a(2)=6:a(3)=9:a(4)=3:a(5)=4 For i=1 To 4 For j= 1 to 5-i If a(j)+ Int(Rnd*2)< a(j+1)Then k=a(j):a(j)=a(j+1):a(j+1)=k End If Next j Next i 执行该程序段后,a(1)~a(5)的值不可能是(  ) A.9,6,2,3,4 B.9,6,2,4,3 C.9,6,3,4,2 D.9,6,4,2,3 8.有以下 VB 程序段: a(1) = 58: a(2) = 38: a(3) = 46: a(4) = 40: a(5) = 58 a(6) = 30: a(7) = 48: a(8) = 50: a(9) = 36: a(10) = 56 For i = 1 To 10 b(a(i) mod 10) = b(a(i) mod 10) + 1 Next i s="" For i = 0 To 9 If b(i) > 0 Then s = s+ " " +str(i)+ ":" + Str(b(i)) Next i 数组 b 各元素初值为 0,执行该程序段,s 的值是(    ) A.3:4 4:3 5:4 B.8:4 6:3 0:3 C.5:4 4:3 3:4 D.0:3 6:3 8:4 9.程序代码如下: n = 0 x = l while  x < 20: x = x*3 n = n+1 print(x,n) 屏幕显示结果是(  )。 A.27  3 B.3  27 C.20  3 D.3  21 10.某算法的部分流程图如图所示,执行这部分流程后,变量  x  的值是(      ) A.5 B.4 C.6 D.10 11.两个长度相同的字符串s1和s2,若所含字符及各字符的数量均相等时可以归为一类。如字符串“ABDAC”与字符串“AABCD”可以归为一类,与“AABBC”不可以归为一类。实现该功能的VB程序段如下: For i = 1 To Len(s1) c = Mid(s1, i, 1) j = 1 Do While j <= Len(s2) If c = Mid(s2, j, 1) Then s2 = ① Exit Do    ‘退出Do循环 Else j = j + 1 If j = Len(s2) + 1 Then Label1.Caption = "不可以归为一类!" Exit For  ‘退出For循环       End If End If Loop        Next i If i = ② Then Label1.Caption = "可以归为一类!" 划线处应填写的代码是(   ) A.①Mid(s2, i, j - 1) + Mid(s2, j,Len(s2) - j)            ② Len(s1) B.①Mid(s2, 1, j - 1) + Mid(s2, j + 1,Len(s2) - j)        ② Len(s1) + 1 C.①Mid(s2, 1, j - 1) + Mid(s2, j + 1,Len(s2) - j)        ② Len(s1) D.①Mid(s2, i, j - 1) + Mid(s2, j,Len(s2) - j)            ② Len(s1) + 1 12.有如下VB程序段: s = Text1. Text t = Mid(s, 1, 1) max = 0 For i = 2 To Len(s) If Mid(s, i, 1)> Mid(s, i-1, 1)Then t = t+ Mid(s, i, 1) If Len(t)> max Then max = Len(t) ans = t Else t = Mid(s, i, 1) End If End If Next i Text2.Text = ans 在文本框Text1中输入“11341358901”,执行该程序段后,文本框Text2中显示的是(    ) A.13435891 B.01 C.3589 D.13589 13.有如下 VB 程序段: For i = 1 To 8     t = a(i)     flag(t) = flag(t) + 1     Do While flag(t) <> 1         t = (t + 1) Mod 10         flag(t) = flag(t) + 1     Loop     b(i) = t Next i 数组b 和flag 中各元素的初值均为0,数组元素a(1)至a(8)的初值分别为“8, 5,9, 4,9, 4, 6, 7” ,程序运行后,b(5)的值为( ) A.0 B.5 C.8 D.9 14.有如下 VB 程序段: Dim a(1 To 6) As Integer Dim d(1 To 6) As Integer a(1) = 10: a(2) = 21: a(3) = 28: a(4) = 11: a(5) = 12: a(6) = 30 Const n = 6 For i = n  To  1  Step -1 d(i) = 0 For j = n To i +1  Step -1 If a(j) > a(i) Then d(i) = d(j) + 1 Next j If d(i) > Max Then Max = d(i) Next i Text1.Text = Str(Max) 执行该程序段,文本框 Text1 中显示的是(   ) A.1 B.2 C.3 D.4 15.当单击命令按钮command1时,窗体上显示的是(  )。 Private sub command1_click()     a=0     For i=1 to 2      For j=1 to 4        If j mod 2<>0 then          a=a+1        End If          a=a+1       Next j     Next i     Print a End sub A.11 B.12 C.13 D.14 二、填空题 16.袜子颜色配对问题。现有不同颜色的袜子若干(袜子的颜色用数字编号1~15表示),颜色相同的袜子才能组成一双,其中有几只袜子是落单的,现要求找出落单袜子的颜色以及能够配对的袜子数量。编写程序解决该问题,程序运行时,在文本框Text1中依次输入袜子的颜色编号(数据都用逗号分隔并以逗号结尾),单击“查找”按钮,在列表框List1中输出落单袜子的颜色编号,在标签label1中现实能配对的袜子数量。运行界面如图所示,实现上述功能的VB程序如下。 请回答下列问题: (1)写出VB代码中的方法名 (只需填一个方法名); (2)根据题意,请在划线处填入合适代码; (3)加框处程序代码有错,请改正。 Const n = 15 Private Sub Command1_Click()   Dim a(1 To n) As Integer  '数组a存放不同颜色袜子的数量,默认值为0   Dim s As String, ch As String   Dim c As Integer, i As Integer, t As Integer     List1.Clear     s = Text1.Text     t = 0 :c = 0 : i = 1     Do While i <= Len(s)         ch = Mid(s, i, 1)         If ch >= "0" And ch <= "9" Then             t = t * 10 + Val(ch)         Else             a(t) =             t = 0         End If         i = i + 1     Loop     For i = 1 To n         If Then List1.AddItem "落单袜子的颜色为" + Str(i)         c =          Next i     Label1.Caption = "能配对的袜子有" + Str(c) + "双" End Sub 17.用VB程序解答百鸡问题 我国古代数学家张丘建在“算经”里提出一个数学史上有名的百鸡问题。题曰:鸡翁一, 他钱五;鸡母一,值钱三;鸡雏三,值钱一:百钱买百鸡,问鸡翁、母、雏各几何? 请把以下算法选项填入到程序语句相对应的位置: 设i, j, k分别代表鸡翁、鸡母、鸡雏的只数。首先确定i, j, k的取值范围: A、若100个钱全买鸡母,则最多可买33只,即j的取值范围是0~33。 B、若100个钱全买鸡翁,则最多可买20只,即i的取值范围是0~20。 C、当i. j在各自的取值范围内确定某个值后,则鸡雏的只数,k=100-i-j也确定了。 D、 让i从0变化到20,当i取某值时再让j从0变化到33,当j取某个值时,k的值也定了。如 果i*5+j*3+k/3=100成立则i, j, k当前的值就是答案。 先在窗体上绘制一个命令按钮,名称为Command1,编写命令按钮的单击事件。实现以上 算法的程序如下: Private Sub Command1_Click() For i = 0 To 20 For j= 0 To 33 k=100-i-j( ) If i*5+j*3 + k/ 3 = 100 Then Print “鸡翁、鸡母、鸡雏分别为"& i & " " & j & " " & k & "只" End if Next j, i End Sub 请计算出任意一种答案。鸡翁、鸡母、鸡雏分别有 只。 18.(1)某省实施《中华人民共和国道路交通安全法》办法中规定,机动车驾驶人驾驶机动车超过规定时速但未超过百分之五十的,处于二百元罚款。超过百分之五十(未造成交通事故)的,处五百元罚款,每多超过五公里,加处二百元罚款,不足五公里的忽略不计,但最高罚款不得超过二千元。用于计算罚款额的Visual Basic程序如下: Private Sub Command1_Click() Dim v0 As Integer, v As Integer, x As Integer v0 = Val(Text1.Text) 'v0 存储规定速度 v = Val(Text2.Text) 'v存储实际速度 If v > v0 And v <= 1.5 * v0 Then x = 200 ElseIf v > 1.5 * v0 Then x = 500+ Int((v - 1.5 * v0) / 5) * 200 Else x = 0 End If If x > 2000 Then x = 2000 Label1.Caption = Str(x) End Sub 运行该程序时,在Text1文本框中输入50,在Text2文本框中输入60,点击Command1时,在Label1的Caption上显示的罚款金为 。 (2)如下一段Visual Basic程序: Private Sub Command1_Click() Dim i As Integer,sum As Integer Dim x As Integer,n as Integer n=Val(Text1.text) sum = 0 For i = 1 To n x = Int(Sqr(i)) If x * x = i Then sum =sum + x Next i Label1.Caption = Str(sum) End Sub 在Text1框中输入10时,点击Command1时,Label1上显示的是 。 19.若已知当前的人均GDP水平和GDP年增长率,可以计算达到某个GDP水平所需年份。在文本框Text1、Text2、Text3中分别输入人均GDP、年增长率和达到的GDP水平,单击计算按钮Command1,在文本框Text4中输出所需年数。程序运行界面如下: (1)在设计程序界面时,使应使用图b所示“控件工具箱”中的 (填写相应编号)添加“计算”按钮。 (2)实现上述功能的VB程序如下,请在划线处填入合适的代码。 Private Sub Command1_Click() Dim gdp As Single,ddgdp As Single,zc As Single,y As Integer gdp=Val(Text1.Text) zc=Val(Text2.Text) ddgdp=Val(Text3.Text) y=0 Do While ____①____     ____②____ gdp=gdp*(1+zc) Loop Text4.Text=Str(y) End Sub 划线处代码为① ② 20.DO 循环中当型循环的关键字是( ),直到型循环的关键字是( ) 三、操作题 21.某考试的多选题有“A、B、C、D、E”5个答案选项。阅卷的评分标准为:“全部选对的得2分,选对但不全的得1分,不选或有选错的得0分”。阅卷算法描述如下: 例如,标准答案为“ABE”,则对应得分表如下所示。 学生答案 ABE AB AE BE A B E AC ...... 字符串 11001 11000 10001 01001 10000 01000 00001 10100 ...... 十进制数(x) 25 24 17 9 16 8 1 20 ...... ans(x) 2 1 1 1 1 1 1 0 0 小温依据上述描述设计了“多选题阅卷”的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 <= 4         For j = i + 1 To 4             If b(i) * b(j) = 0 Or k = 5 Then ②     Next j         i = i + 1         Loop         '当标准答案含5个选项时,学生答案选其中4个选项可得1分。代码略     End Sub     Private Sub Command2_Click()         Dim xh(1 To 1000) As String, answer(1 To 1000) As String         '从数据库中读取学生学号和答案的数据分别存储在数组xh和answer中 '记录总数存储在变量n中,代码略     List1.Clear     For i = 1 To n     List1.AddItem xh(i) + " " + answer(i) + " " + Str(ans(f(answer(i))))     Next i End Sub Function f(s As String) As Integer     Dim i As Integer, x As Integer     x = 0     For i = 1 To Len(s)         x = ③     Next i     f = x End Function 22.在平面坐标系中,有n个节点。某机器人从原点出发,按x坐标从小到大依次寻迹,若x坐标相同,则按y坐标从小到大寻迹,两点间按直线移动。机器人按此规则访问其中的n-1个节点,求机器人寻迹n-1个节点的最短距离(移动轨迹的折线段长度)。 编写一个计算“最短寻迹距离”的程序,功能如下:单击“确定”按钮Command1,读取n个点的坐标,在列表框List1中按x坐标升序显示,若x坐标相同,则按y坐标升序显示。在标签Label1中显示最短的寻迹距离,在标签Label2上显示未访问到的节点的坐标。若有多个节点可以选择,则显示x和y坐标较大的节点。程序运行界面如下图所示。 请回答下列问题: (1)下列类产生的对象没有Captin属性的是 (单选,填字母:A.Form / B.TextBox / C. Label  D.CommandButton)。 (2)实现上述功能的VB程序如下,请在划线处填入合适的代码。 Const n = 5 Dim a(-1 To 2 * n) As Single Function getdis(i As Integer, j As Integer) As Single   '计算第i和第j个点的直线距离,代码略 End Function '读取n个点坐标存a(1)~a(2*n)中,a(1)、a(2)存储第1个点的坐标, 'a(3)、a(4)存储第2个点的坐标,依次类推。a(-1)、 a(0)存储原点坐标(0,0)。代码略 Private Sub Command1_Click() Dim i As Integer, j As Integer, k As Integer , t As Integer Dim dis As Single, sum As Single, dis1 As Single, dis2 As Single, dis3 As Single Dim maxdis As Single, ans As Integer For i = n To 2 Step -1      For j = 2 To i     If a(2 * j - 1) > a(2 * k - 1) Or a(2 * j - 1) = a(2 * k - 1) And a(2 * j) > a(2 * k) Then k = j   Next j   If i <> k Then     t = a(2 * i - 1): a(2 * i - 1) = a(2 * k - 1): a(2 * k - 1) = t     t = a(2 * i): a(2 * i) = a(2 * k): a(2 * k) = t   End If Next i List1.AddItem "n个点的坐标" For i = 1 To 2 * n Step 2   List1.AddItem "(" + Str(a(i)) + "," + Str(a(i + 1)) + ")" Next i sum = 0 For i = 1 To n    Next i maxdis = 0 For i = 1 To n - 1   dis1 = getdis(i - 1, i)   dis2 = getdis(i, i + 1)   dis3 = getdis(i - 1, i + 1)   If Then maxdis = dis1 + dis2 - dis3: ans = i Next i dis = getdis(n - 1, n) If dis >= maxdis Then maxdis = dis End If Label1.Caption = "最短寻迹距离为:" + Str(sum - maxdis) Label2.Caption = "未访问点的坐标:" + "(" + Str(a(2 * ans - 1)) + "," + Str(a(2 * ans)) + ")" End Sub (3)程序加框处的代码有错,请改正 。 四、简答题 23.将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合? Dim i,j,k As Integer ′ i,j,k用于记录5元,1元,0.5元的张数 Print“5元    1元    0.5元” For i=1 To 20 For j=1 To 100-i k=__①__ If__②__Then Print i,j,k ′分别输出i,j,k三个变量。 End If Next j Next i 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.A 2.C 3.A 4.B 5.D 6.C 7.B 8.D 9.A 10.B 11.B 12.A 13.A 14.C 15.B 16. Clear      或    AddItem a(t) + 1 a(i) Mod 2 = 1 c + a(i) \ 2 17. B A C D 0、25、75或4、8、78或8、11、81或12、4、84 18.(1)200(2分) (2)6(2分) 19. 3 ①gdp<ddgdp ②y=y+1 20. While Until 21.(1)1   (2)① sum + b(i)    或sum + 2 ^ (4 – i)   ② ans(sum - b(i) - b(j)) = 1    ③ x + Val(Mid(s, i, 1)) * 2 ^ (Len(s) - i)或者x + Val(Mid(s, i, 1)) * 2 ^ (5 - i)或者 x + Val(Mid(s, Len(s) - i + 1, 1)) * 2 ^ (i - 1)或者 x + Val(Mid(s, 6 - i, 1)) * 2 ^ (i - 1) 或者 x * 2 + Val(Mid(s, i, 1)) 22. B k = 1 sum = sum + getdis(i - 1, i) ans = n dis1 + dis2 - dis3 >= maxdis 23.①100-i-j ②5*i+j+0.5*k=100 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

2023-2024学年高一上学期选修1第二章第3节  循环结构程序
1
2023-2024学年高一上学期选修1第二章第3节  循环结构程序
2
2023-2024学年高一上学期选修1第二章第3节  循环结构程序
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。