内容正文:
专题五 循环结构程序设计(讲义)
---《Visual Basic 程序设计》专题复习讲练测
[考纲要求]
1.For 循环
2.Do循环
3.列表框与组合框控件
4.常用算法实例
[课时安排]
2课时
[知识梳理]
一:For循环
1. 语法格式
For 循环变量 = 初值 To 终值 [step 步长]
语句块1
[Exit For]
语句块2
Next [循环变量]
功能:根据指定的循环次数执行循环体
说明:
(1)循环变量的初值、终值和步长均是数值表达式。其中步长可以是正数,也可以是负数,但不能为0。当步长略去不写时,默认为1。
(2)利用Exit For语句可提前结束循环。
(3)关键字Next为循环正常结束的终端语句,Next语句中的循环变量必须与For语句中的循环变量一致。
(4)如果循环变量的值在循环体内不被改变,则循环次数由初值,终值和步长的公式为:
循环次数 = Int ((终值-初值)/步长+1)
二:Do循环
1. 前测型Do循环语句的语法格式
Do While | Until <条件>
[<语句组1>]
[Exit Do]
[<语句组2>]
Loop
说明:
(1) <条件>是条件表达式,为循环的条件,其值为True或False。
(2) 前测型Do循环是先判断条件,再执行循环体。根据条件分为当型和直到型:
①当型Do While...Loop:当条件为True时执行循环体,条件为False时,终止循环。
②直到型Do Until... Loop:当条件为False时执行循环体,直到条件为True时,终止循环。
(3)在Do循环中,可以在循环体中放置任意个数的Exit Do语句,随时跳出Do循环。
2. 后测型Do循环语句的语法格式
Do
[<语句组1>]
[Exit Do]
[<语句组2>]
Loop While | Until <条件>
说明:
(1)<条件>是条件表达式,为循环的条件,其值为True或False。
(2)后测型Do循环是执行一次循环体后,再进行条件判断。根据条件分为当型和直到型:
①当型Do ... While Loop:当条件为True时继续执行循环体,条件为False时,终止循环。
②直到型Do... Until Loop:当条件为False时继续执行循环体,直到条件为True时,终止循环。
三:列表框
列表框ListBox通过显示多个选择项,供用户选择其中一项,达到与用户对话的目的。
1. 常用属性
(1)List:设置或返回列表中选项。该属性是一个字符型数组,存储列表框的项目数据,下标是从0开始的。如:List(0)表达第一项(Listindex=0)的内容。
(2)ListIndex:为整型值,选中的项目的序号,假如列表框可多选,则为最终一次选中项目的序号,没有项目选中时为-1。
(3)ListCount:为整型值,表达项目的数量,ListCount-1是最终一项的下标。其值只能在程序中读取,不能修改。
(4)Selected属性:该属性返回或设置列表框控件中的一种项目的选择状态。该属性是一种逻辑类型的数组。如:List1.Selected(0)=True表达列表框List1的第一种项目被选中。
(5)Text:当前列表中当前选中项的文本内容。
(6)Sorted:设置列表框中的项是否按字母顺序排序,若将该属性值设置为 true,则列表框中的列表项按字母顺序排序。
(7)MultiSelect属性:用于指示是否能够在列表框控件中进行复选以及怎样进行复选。
①0-None:禁止多项选择,这时在一个列表框中只能选择一项
②1-Simple:简单多项选择,用鼠标单击或按空格键表示选定或取消选定的一个选择项。
③2-Extended:扩展多项选择,按住Ctrl键,同时用鼠标单击或按空格键表示选定或取消选定一个选择项,按住Shift键,同时单击鼠标或按住Shift键并移动光标键,就可以从前一个选定的扩展项选择当前选择项,即选定多个连续项。
2. 常用方法
(1) AddItem:向列表框添加一个列表项。
(2) Clear:清空列表框中的所有项。
(3) RemoveItem:从列表框中除去一个项目。
四:组合框
组合框(ComboBox)是组合列表框和文本框的特性而成的控件。它可以像列表框一样,让用户通过鼠标选择所需的项目,也可以像文本框一样,用输入的方式选择项目,但输入的内容不能自动添加到列表框中。
1.常用属性
(1)Style:它是组合框的一个重要属性,其取值为0,1,2,它决定了组合框的3种不同的类型,即下拉组合框(默认)、简单组合框和下拉列表框。
①0-Dropdown Combo(下拉组合框):禁止多项选择,这时在一个列表框中只能选择一项
②1-Simple Combo(简单组合框):简单多项选择,用鼠标单击或按空格键表示选定或取消选定的一个选择项。
③2-Dropdown List(下拉列表框):扩展多项选择,按住Ctrl键,同时用鼠标单击或按空格键表示选定或取消选定一个选择项,按住Shift键,同时单击鼠标或按住Shift键并移动光标键,就可以从前一个选定的扩展项选择当前选择项,即选定多个连续项。
(2)Text:该属性是用户所选项目的文本或直接从编辑区输入的文本。
五:常用算法实例
1. 穷举法
穷举法是指对所有可能的值进行逐一判断,找出其中符合条件要求的解。
百鸡问题:公鸡每只5文钱,母鸡每只3文钱,小鸡3只1文钱,用100文钱买100只鸡,问公鸡、母鸡、小鸡各有多少只?
For x = 0 To 20
For y = 0 To 33
z = 100 - x - y
If 5 * x + 3 * y + z / 3 = 100 Then Print x, y, z
Next y
Next x
2. 递推法
递推法”又称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。
求斐波那契级数的前20项
Private Sub Command1_click()
Dim intNum As Integer
intNum = CInt(Text1.Text)
If intNum = 1 Or intNum = 2 Then
Print "Fibonacci数列的第";
Print intNum; "项的值为"; 1
Else
Dim int1 As Integer, int2 As Integer
Dim intResult As Long
Dim I As Integer
int1 = 1: int2 = 1
For I = 3 To intNum
intResult = int1 + int2
int1 = int2
int2 = intResult
Next
Print "Fibonacci数列的第"; intNum; "项的值为"; intResult
End If
End Sub
3. 辗转相除法
用辗转相除法求两自然数m,n的最大公约数。
分析:求最大公约数的算法思想:
(1)对于已知两数m,n,使得m>n;
(2) m除以n得余数r;
(3)若r=0,则n为最大公约数结束;否则执行(4);
(4)mn,nr,再重复执行(2)。
例 求 m=14 ,n=6 的最大公约数.
If m < n Then t = m: m = n: n = t
r=m mod n
Do While (r <> 0)
m=n
n=r
r= m mod n
Loop
Print "最大公约数=", n
[真题练讲]
1.执行下面的程序段后,x的值为( )
x=10
For i=1 To 20 Step 3
x=x+i\4
Next I
A.24
B.25
C.26
D.27
【答案】B
【解析】x = 10,循环变量i从 1 开始,步长为 3,循环到i ≤ 20。
2.下列程序中 s=s+j 语句共执行了( )次。
Din s As Integer
Dim i As Integer, j As Integer
For i=2 To 10 Step 2
For j=2 To 5 Step 2
s=s+j
Next j
Next i
Print s
A. 10
B. 15
C. 20
D.25
【答案】A
【解析】外层循环变量i从 2 到 10,步长为 2,循环次数为:(10-2)/2 + 1 = 5 次;内层循环变量j从 2 到 5,步长为 2,循环次数为:(5-2)/2 + 1 = 2 次。
3.下面程序段运行后的输出结果是( )
a=2
b=a
DO Until a>=5
X=a*b
Print Str(a) & "*" & Str(b) & "=" & Str(X)
a=a+b
b=b+a
Loop
A.2*1=4 3*5=15
B.2*2=4 4*4=16
C.2*2=4 4*6=24
D.2*2=4 6*4=24
【答案】C
【解析】Do Until a >= 5循环(条件为a >= 5时退出)。
4.设窗体上有一个列表框控件List1,且其中含有若干列表项,则以下能表示当前被选中的列表项内容的是( )
A. List1.ListIndex
B. List1.List
C. List1.Index
D. List1.Text
【答案】D
【解析】本题考查列表框控件的属性。List1.Text用于获取当前选中项的内容;List1.ListIndex表示当前选中项的索引(无内容时为-1);List1.List是存储所有列表项的数组;List1.Index通常指控件在容器中的索引。因此答案选D。
5.设组合框Combo1中有3个项目,则以下能删除最后一项的语句是( )
A. Combo1.RemoveItem Text
B. Combo1.RemoveItem 2
C. Combo1.RemoveItem 3
D. Combo1.RemoveItem Combo1.Listcount
【答案】B
【解析】本题考查组合框的RemoveItem方法。组合框的列表项索引从0开始,3个项目的索引分别为0、1、2,最后一项的索引为2;Listcount属性表示列表项的总数,此处为3,若使用Listcount作为参数会超出索引范围。因此答案选B。
6.如果列表框 List1 中只有一个项目被用户选定,则执行语句
debug.print list1.selected(list1.listindex)的结果是( )
A.在立即窗口输出被选定的项目的索引值
B.在立即窗口输出 true
C.在窗体上输出被选定的项目的索引值
D.在窗体上输出 true
【答案】B
【解析】List1.ListIndex返回当前选中项的索引值,List1.Selected(索引)是一个布尔属性,用于判断指定索引的项目是否被选中,Debug.Print的功能是将结果输出到立即窗口,而非窗体。
[限时练习]
1.在Visual Basic中,组合框是文本框和( )特性的组合。
A.复选框
B.标签
C.列表框
D.目录列表框
【答案】C
【解析】列表框(ListBox)提供项目列表供选择,组合框的下拉列表功能正源于此,与文本框结合形成组合框。
2.以下程序输出的结果为( )。
X=1
y=4
Do Until y>4
x=x*y
y=y+1
Loop
Print x
A.4
B.8
C.12
D.16
【答案】A
【解析】初始值:x = 1,y = 4。进入Do Until y > 4循环(条件为y > 4时退出)。
3.在过程中有语句For I=N1 To N2 Step N3,在该循环体内有下列四条语句,其中( )会影响循环执行的次数。
①N1=N1+I ②N2=N2+N3 ③I=I+N3 ④N3=2*N3
A.①②
B.①②③
C.③
D.①②③④
【答案】C
【解析】在For I = N1 To N2 Step N3循环中,循环的起始值(N1)、终止值(N2)和步长(N3)在循环开始时已被固定,后续对这三个变量的修改(①②④)不会影响循环的执行次数。
4.假如列表框(List1)有四个数据项,那么把数据项“China”添加到列表框的最后,应使用( )语句。
A.List1.AddItem 3, "China"
B.List1.AddItem "China", List1.List1Count-1
C.List1.AddItem "China", 3
D.List1.AddItem "China"
【答案】D
【解析】在 Visual Basic 中,列表框的AddItem方法用于添加项目,语法为:列表框.AddItem 项目内容 [, 索引];若省略索引参数,项目将被添加到列表的末尾。
5.以下程序段的运行结果是( )。
Private Sub Form_Click()
Dim s As Long, f As Long
Dim n As Integer, i As Integer
f = 1
n = 4
For i = 1 To n
f = f * i
s = s + f
Next i
Print "s="; s
End Sub
A. 33
B. 34
C. 35
D. 36
【答案】A
【解析】初始值:s = 0(默认值),f = 1,n = 4,循环变量i从 1 到 4。
6.将数据项“China”添加到列表框(List)中成为第一项应使用( )语句。
A.List1.AddItem”China”,0
B.List1.AddItem”China”,l
C.List1.AddItem 0,”China”
D.List1.AddItem 1,”China”
【答案】A
【解析】索引参数指定项目插入的位置,列表项的索引号从 0 开始。
7.在下列说法中,正确的是( )
A.通过适当的设置,可以在程序运行期间,让时钟控件显示在窗体上
B.在列表框中不能进行多项选择
C.在列表框中能够将项目按字母顺序从大到小排列
D.框架也有 Click和 DblClick事件
【答案】D
【解析】时钟控件(Timer)是不可见控件;列表框(ListBox)的MultiSelect属性可设置为允许多项选择;列表框的Sorted属性仅能设置项目按字母顺序从小到大排列,无法直接设置为从大到小排列。
8.对于列表框控件,设置( )属性可以在属性窗口添加列表项。
A. List
B. Caption
C. ListIndex
D. Text
【答案】A
【解析】List属性是一个字符串数组,用于存储列表框中的所有列表项,可在属性窗口中直接编辑添加;Caption属性用于设置控件的标题;ListIndex表示当前选中项的索引;Text表示当前选中项的文本。因此答案选A。
9.设组合框Combo1中有10个项目,则能删除最后一项的语句是( )。
A.Combo1.RemoveItem 9
B.Combo1.RemoveItem 10
C.Combo1.RemoveItem 11
D.Combo1.RemoveItem Combo1.ListCount
【答案】A
【解析】在 Visual Basic 中,组合框(ComboBox)的RemoveItem方法用于删除指定索引的项目,语法为:组合框.RemoveItem 索引;组合框中项目的索引从 0 开始,若有 10 个项目,其索引依次为 0 到 9,最后一项的索引为 9。
10.在Visual Basic中,获取组合框Combo1中最后一个列表项序号的表达式是_________。
【答案】 Combo1.ListCount-1
【解析】在 Visual Basic 中,组合框的ListCount属性用于返回列表中项目的总数。由于列表项的索引号从 0 开始。
11.如果列表框的ListCount 属性为 9,则列表框的最后一项的ListIndex值为__________。
【答案】8
【解析】在 Visual Basic 中,列表框的ListCount属性表示列表中项目的总数,而ListIndex属性表示当前选中项的索引号,索引号从 0 开始。
12.下列程序的功能是判断一个正整数是否为素数。请将程序补充完整。
Private Sub Command1_Click()
Dim n As Integer
n = InputBox("请输入一个大于3的正整数")
s = 0
For m = 3 To ____(1)____
If n Mod m = ___(2)_____ Then
s = 1
Exit For
End If
Next m
If s = ____(3)____ Then
Print n; "是一个素数"
Else
Print n; "不是一个素数"
End If
End Sub
【答案】
(1)Sqr(n)(或n-1)
(2)0
(3)0
【解析】本题考查素数判断算法。素数是除1和自身外无其他因数的数,循环检查到sqrt(n)即可(效率更高);若n能被m整除(余数0),则不是素数(s=1);s=0时表示未找到因数,是素数。
[内容小结]
1.本章节是关于循环结构的知识点,关于循环结构的执行过程,可以利用程序流程图对相应知识点进行梳理总结。
2.本章节的重点是For语句、Do while语句的执行过程;组合框、列表框控件的属性和方法。
3.本章节的难点在于对循环结构的灵活应用。
4.本章节的知识点的学习对于VB知识的综合应用有重要的作用。
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$