问题:
1、计算1到100之间所有奇数的和。1+3+5+…+99
2、键盘输入n个数,-1标志输入结束,计算输出这n个数的平均值。(键盘输入inputbox())
一、For-Next循环
For循环变量一般形式是:
For 循环变量 = 初值 To 终值 Step 循环变量增量
循环体
Next 循环变量
循环变量的初值、终值、循环变量增量都是数值型。其中要重复执行的操作称为循环体,增量可正可负,如果没有设置Step,则增量的缺省值为1
1、循环变量取初值;
2、循环变量与终值比较,没有超过终值转3,否则循结束,接着执行循环语句的后继语句;
3、执行一次循环体
4、循环变量增加一个增量
5、重复步骤2~4。
以上可以看出,For-Next循环变量是一种当型循环。
说明
(a)For语句与Next语句必须成对出现,而且它们当中的“循环变量”必须是同一个变量,如上例中均为I。
(b)当循环变量为正时,循环变量超过终值,是指循环变量的值大于终值时;若为负,则是指循环变量的值小于终值。
二、Do-Loop循环
For-Next循环的次数是确定的,但是有的问题只知道循环结束的条件,重复执行的次数事先并不知道,这是需要Do-Loop循环
当型
格式一:
Do While 条件
循环体
Loop
或
Do
语句块
Loop While
例题:求最大公约数
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim r As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
r = a Mod b
Do While r <> 0
a = b
b = r
r = a Mod b
Loop
Text3.Text = Str(b)
End Sub
当VB执行Do While-Loop循环时,先判断指定的条件是否为真,若条件为真,执行循环体,条件为假时退出循环。
直到型
格式二:
Do
循环体
Loop Until条件
或
Do until
语句块2
Loop
这种循环的执行过程如图所示。进入循环体后,先执行一次循环体A,然后再检查条件P是否成立。如果不成立,就重复执行循环体A,直到条件P成立退出循环体。
例题:如果我国人口每年以平均1.5%的速度增长,问多少年后我国人口达到或超过15亿?设现在人口为12.3亿。
Private Sub Form_Click()
Dim p As Single
Dim r As Single
Dim n As Integer
p = 1230000000#
r = 0.015
n = 0
Do
p = p * (1 + r)
n = n + 1
Loop Until p >= 1500000000#
Print n; "年后", "人口="; p
End Sub
下列程序段执行结束后,变量y的值是(C)。
y=2
Do while y<=6
y=y+y
Loop
A、2 B、6 C、8 D、16
分析程序,写出执行结果。
Private Sub command1_click()
Dim S As Integer,I As Integer
S=0
For i=1 to 10 Step 2
S=S+i
Next i
Print “S=”;s
End Sub
答案:S= 25
程序设计
Private Sub Command1_Click()
Dim i As Integer
Dim sum As Integer
sum = 0 '初始化,赋初值
For i = 1 To 99 Step 2
sum = sum + i ' 循环体
Next i
Print "sum="; sum
End Sub
Private Sub Command2_Click()
Dim i As Integer
Dim sum As Integer
sum = 0 '初始化,赋初值
i = 1
Do While i 100
sum = sum + i
i = i + 2
Loop
Print "sum="; sum
End Sub
Private Sub Command3_Click()
Dim i As Integer
Dim sum As Integer
sum = 0 '初始化,赋初值
i = 1
Do
sum = sum + i
i = i + 2
Loop While i 100
Print "sum="; sum
End Sub
Private Sub Command4_Click()
Dim i As Integer
Dim sum As Integer
sum = 0 '初始化,赋初值
i = 1
Do
sum = sum + i
i = i + 2
Loop Until i > 100
Print "sum="; sum
End Sub
Private Sub Command5_Click()
Dim i As Integer
Dim sum As Integer
sum = 0 '初始化,赋初值
i = 1
Do Until i > 100
sum = sum + i
i = i + 2
Loop
Print "sum="; sum
End Sub
Private Sub Command6_Click()
Dim s As Integer
Dim n As Integer
Dim x As Integer
s = 0
n = 0
x = Val(InputBox("请输入数值(-1表示输入结束)"))
Do While x <> -1
s = s + x
n = n + 1
x = Val(InputBox("请输入数值(-1表示输入结束)"))
Loop
Print "该组数的平均值为" & s / n
End Sub
Private Sub Command7_Click()
Dim s As Integer
Dim n As Integer
Dim x As Integer
s = 0
n = 0
x = Val(InputBox("请输入数值(-1表示输入结束)"))
Do Until x = -1
s = s + x
n = n + 1
x = Val(InputBox("请输入数值(-1表示输入结束)"))
Loop
Print "该组数的平均值为" & s / n
End Sub