内容正文:
第3节 循环结构程序
一、选择题
1.有如下VB程序段:
s = " "
For i= 2 To 5
For j =i To 5
If j Mod i= 0 Then a(j)= a(j)+1
Next j
Next i
For i = 1 To 5
If a(i)<> 1 Then s = Str(i)&.s
Next i
Text1. Text = s
若数组a的初始值都为0,则运行该程序段后,Text1中显示的内容为( )
A.14 B.235 C.532 D.41
2.以下程序,展现了伏地魔7个魂器由多至无的变化过程,其中能正确显示结果的有( )个。
A.1 B.2 C.3 D.4
3.将正整数n 分解为连续正整数之和(如正整数9 分解为2+3+4、4+5 两种)。统计分解方法共有几种的VB 程序段如下:
ans = 0
n = Val(Text1.Text)
For i = 1 To n \ 2
t = n: x = i
Do While t > 0
Loop
Next i
Text2.Text = Str(ans)
方框中的代码由以下三部分组成:
①If t = 0 Then ans = ans + 1 ② t = t - x ③ x = x + 1 下列选项中,代码顺序正确的是( )
A.③①② B.②①③ C.①③② D.①②③
4.某算法的部分流程图如图所示。执行这部分流程,输出s,i的值分别是( )
A.84,8 B.84,7 C.63,8 D.63,7
5.某算法的部分流程图如图所示,执行这部分流程后,变量a的值是()
A.4 B.2 C.22 D.46
6.有如下VB程序段:
Dim flag As Boolean
s=Textl.Text:j=0:cnt=1
Fori=l To lean(s)
c=Mid(s,i,l)
If c>="0" And c<="9" Then
j=j+1
flag=True
Else
If j>lenmax And cnt Mod 2=l Then lenmax=j
j=0
If flag Then cnt=cnt+1:flag=False
End If
Next i
Text2.Text=Str(lenmax)
在文本框Text1输入“one302type27645time9986”,程序运行后文本框Text2中显示为( )
A.12 B.5 C.3 D.4
7.已知由字母组成的字符串s,现要实现如下功能:将字符串s中的字母按照26个英文字母顺序依次输出(重复出现的字母只需输出一次)。如s="Congratulate",输出结果为"aceglnortu",为实现上述功能,在横线处填入的代码应该是( )
Dim a(1 To 26)As Integer
s=Text1. Text
For i=1 To Len(s)
①
If c>="A" And c<="Z" Then c=Chr(Asc(c)+32)
②
Next i
For i=1 To 26
If a(i)<> 0 Then Label1.Caption= Label1.Caption+ ③
Next i
A.①c=Mid(s,i,1)②a(Asc(c)-96)=a(Asc(c)-96)+1③Chr(96+i)
B.①c=Mid(s,i,1)②a(i)=a(i)+1③Chr(a(i))
C.①c=Mid(s,i,1)②a(Asc(c)-96)=a(Asc(c)-96)+1③Chr(a(i))
D.①c=Mid(s,i,1)②a(i)=a(i)+1③Chr(96+i)
8.有如下VB程序段:
s1 = "2019GaoKao"
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If ch >= "0" And ch <= "9" Then
ch = Str((Val(ch)+1)Mod 10) s2 = ch + s2
ElseIf ch >= "a" And ch <= "z" Then
ch = Chr(Asc(ch) - 32) s2 = s2 + ch
End If
Next i
该程序运行后,s2的值是( )
A."A0A00213" B."0213A0A0" C."02130A0A" D."0A0A0213"
9.某算法的部分流程图如下图所示,输入s=11200,执行这部分流程后,输出m和n的值分别是( )
A.14 4
B.21 4
C.22 5
D.42 5
10.有如下 VB 程序段:
For i = 1 To 8
a(i) = Int(Rnd * 7) + 1
Next i
For i = 1 To 3
For j = 1 To 8 - 2 * i If a(j) Mod 7 > a(j + 2) Mod 7 Then
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
Next j
Next i
For i = 1 To 8
ch(i) = Chr(a(i) + Asc("A") - 1)
Next i
执行该程序段后,ch(1)~ch(8)各元素值不可能的是( )
A.AACBFBFE B.GGABCDDE C.ABBBCDDE D.ABBCDDEG
11.有如下VB程序段:
n = 7
d(1) = 123: d(2) = 35: d(3) = 43: d(4) = 23: d(5) = 56: d(6) = 78: d(7) = 132
k = 1
For i =2 To n
For j = (1)
If (2) Then
tmp = d(j): d(j) = d(j + 2): d(j + 2) = tmp
End If
Next j
k = -k
Next i
执行该程序段后,d 数组各元素为“132,23,123,35,56,78,43”,上述程序段中方框处可选语句为:
①i -1 To n - 2
②1 To n - i
③d(j) * k > d(j + 2) * k
④d(j) * (-k) > d(j + 2) * (-k)
则(1)(2)处语句依次可为( )
A.①③ B.②③ C.①④ D.②④
12.有如下VB程序段:
Dim i As Integer,c As String,s As String,t As String
s=“China2014IT”:t=“”
For i=1 To Len(s)
c=Mid(s,i,1)
If c>=“a” And c<=“z” Then t=t+c
Next i
Label1.Caption=t
该程序段运行后,标签Label1中显示的内容是( )
A.2014 B.ChinaIT
C.hina D.CIT
13.在VB中,循环结构 For i = 1 To 10 的步长是( )。
A.0 B.-1 C.1 D.10
14.某算法的部分流程图如图所示,执行这部分流程后,变量x的值是( )
A.5 B.6 C.10 D.15
15.以下关于循环结构的描述中,正确的是( )。
A.与分支结构不同,循环结构一定会对循环条件进行多次判断。
B.循环结构中,重复执行的内容有时候一次都不被执行。
C.在循环结构的流程图中,除了有向下的流程线外还应有向上返回的流程线。
D.根据实际需要,在流程图中可出现多个循环结构。
二、填空题
16.有如下Visual Basic程序段:
s=0
n=1
for i=4 to 1 step -1
n=n*i
s=s+n
next i
问:该程序段运行后,
(1)共循环___________次。
(2)变量s的值是___________。
17.运行下列程序,正确的结果是
s=0
for i in range (1 5):
s=s+i
print("i=",i,"s=",s)
18.计算1+2+3+4+…+N>2020的最小N值,采用图示算法。
在①处应填写 ,
②处应填写 。
19.袜子颜色配对问题。现有不同颜色的袜子若干(袜子的颜色用数字编号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
20.某密文是由一串数字加密得到,其解密规则是:①对连续重复的大写字母,仅保留1个;②在去重后的文本中,从首字符开始间隔5个字符取1个,依次连接取出的字符,即为明文。
编写解密的VB程序,功能如下:在文本框Text1中输入密文,单击“解密”按钮Command1,在文本框Text2中显示去重后的文本,并在标签Label1中显示明文。程序运行界面如图所示。
(1)命令按钮Command1上显示的“解密”文字,是通过修改该按钮的____________(单选,填字母:A.Font/ B.Caption/ C. BackColor)属性实现的。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1 Click()
Dim s1 As String,s2 As String,c As String,mw As String
Dim i As Integer
s1= Text1.Text
s2 = Mid(s1,1,1)
For i=2 To ①
c=Mid(sl.i.1)
If c>="A" And c<= "Z" Then
If ② Then s2 =s2 +c
Else
s2 =s2+c
End If
Next i
mw=“”
i=6
Do While i<= Len(s2)
mw = mw + Mid(s2, i, 1)
③
Loop
Text2. Text= s2
Label1. Caption =mw
End Sub
三、操作题
21.学校创客社团开展机器人比赛活动,其中设置了机器人循迹项目。比赛规则如下:给出10*10规模的矩阵地图,随机设定4个循迹点,小车以蛇形路线找到循迹点后,计算最长的两点直线距离。矩阵图中以0表示非循迹点,1表示循迹点,循迹过程如图a所示:编写一个VB程序实现如下功能:单击“开始循迹”按钮Command1,呈现10*10矩阵地图,并随机生成4个循迹点,分别用数字1表示,数字0表示非循迹点;计算4点中相距最远的两点的直线距离,显示在标签Label1中。程序运行界面如图b所示。
图a 图b
(1)若随机生成的4个循迹点如图a所示,则该4点中相距最远的两点直线距离为 。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const n = 10, m=4
Dim b(1 To 8) As Integer
Private Sub Command1_Click()
Dim f(1 To n * n) As Integer
Dim i As Integer, j As Integer, w As Integer, k As Integer
Dim length As Single, maxlen As Single, s As String
‘生成矩阵地图和随机生成4个循迹点,0表示非循迹点,1表示循迹点,存于数组f中For i = 1 To n^2 ‘显示矩阵地图和4个循迹点
s = s + Str(f(i))
If i Mod n = 0 Then
List1.AddItem s
s=""
End If
Next i
w = 1
For i = 1 To n
For j = 1 To n
k = (n + 1) * ((i-l) Mod 2)+(-1)^(i-1)*j
If ① Then‘记录循迹点所在位置
b(2 * w - 1) = i: b(2 * w) = k
w = w + 1
End If
Next j
Next i
i=1 : maxlen = 0
Do While i<= m - 1
For j=i+1 To m
②
If length > maxlen Then maxlen = length
Next j
i = i + 1
Loop
Label1.Caption = Str(maxlen)
End Sub
Function reck(x As Integer, y As Integer) As Single
Dim c As Integer, d As Integer
Dim h As Single
c = ③
d = Abs(b(2 * x)-b(2 * y))
h= Sqr(c^2+d^ 2)
reck = h
End Function
22.【加试题】小王编写了一个实现文字查找替换功能的VB程序,运行界面如图所示。文本框Text1显示原文内容,Text2中输入查找内容,Text3中输入替换内容,单击“全部替换”按钮Command1后,Text4显示查找替换的结果,Text5中显示替换的次数,Text6显示“查找内容”在原文中的起始位置。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim s As String, result As String, pos As String
Dim count As Integer, i As Integer
i = 1: count = 0
result = "": pos = ""
Do While i <= Len(Text1.Text)
s = Mid(Text1.Text, i, Len(Text2.Text))
If s = Text2.Text Then
result = result + Text3.Text
count = count + 1
pos = pos + Str(count)
i = i + Len(Text2.Text)
Else
result = result + Text2.Text
i = i + 1
End If
Loop
Text4.Text = result
Text5.Text = Str(count)
Text6.Text = pos
End Sub
四、简答题
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.D
2.C
3.B
4.A
5.D
6.C
7.A
8.B
9.C
10.D
11.D
12.C
13.C
14.A
15.BCD
16.(1)4 (2) 64
17.i=4 s=10
18. s<=2020 print N-1
19. Clear 或 AddItem a(t) + 1 a(i) Mod 2 = 1 c + a(i) \ 2
20.(1)B
(2)①Len(s1)或 Len(Text l. text)或其他等价表达式。
②c<>Mid(sl,i-1,1)或c<>Mid(s2,Len(s2),1)或c<>Mid(s2,Len(s2))或其他等价表达式。
③i=i+6 或其他等价语句
21. 5 f((i-1)*n+k)=1 length= rec(i,j) Abs(b(2 * x-1)-b(2 * y-1))
22.(1)pos+Str(i)
(2)result=result+Mid(Text1.Text,i,1)
23.①100-i-j ②5*i+j+0.5*k=100
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$