VB do while循环问题

代码:
Private Sub Command1_Click()
Dim a As Integer, b As Integer
Do
Print "*"
b = 0
a = a + 1
Do
Print "#"
b = b + 1
Loop While b <= 1
Loop While a <= 2
End Sub
为什么b要设定初值,而a不用呢?
另外,是不是a循环一次,b就要循环两次?如果再加一层的话,又是怎样算呢?求解

你的do loop循环等同于下面这个for循环
for a = 0 to 2
for b = 0 to 1
next
next
循环就是为了重复执行 而你的do内循环 执行的条件是以B的值小于等于1为循环条件
如果不在内循环开始前重置循环条件的话 不管外循环的次数是多少 这个内循环只会执行一次
那就失去的内嵌循环的大部分意义了 但只要不违背语法你想如何执行代码都是你决定的 关键还得看写这段代码想实现的目的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-31
a可能也要的,丢了, 加到一起 b=0:a=0
第2个回答  推荐于2016-07-04
a, b 声明为 Integer 后初值就是 0
b = 0 的意义不是设定,而是重置

首先 外循环
Do
b = 0
a = a + 1
...
Loop While a <= 2
由于 a 是 Integer 型,初值为 0,Loop While a <= 2,说明 a = 0, 1, 2 外循环循环三次后结束
再看 内循环
Do
b = b + 1
Loop While b <= 1
由于在第一次外循环中 b=0,第一次内循环 Loop While b <= 1,说明 b = 0, 1 内循环循环两次后结束,很显然,a 循环一次,b 就要循环两次。
但若 b 不重置为 0 的话,在第二次外循环开始,b >= 1 内循环 Loop While b <= 1 就只会循环一次就结束。即 在第二次外循环开始, a 循环一次,b 就循环一次。追问

我又在原基础上加了一层:
Dim a As Integer, b As Integer, c As Integer
Do
Print "*"
b = 0
a = a + 1
Do
Print "#"
c = 0
b = b + 1
Do
Print "&"
c = c + 1
Loop While c < 1
Loop While b <= 1
Loop While a <= 2
结果是
* # & # & * # & # & * # & # &
正确吗?a循环1次,b循环两次。b循环一次,c循环一次。a循环了三次。c该设定吗?放b循环体对吗

追答

你的分析和结果都正确。算是理解了。c 放b循环体是对的,如果 b循环一次,c循环一次 c 不设定也可以,但 如果 b循环一次,c循环 >1 次,c 必须在 b 循环的开始置 0,即 c= 0。
不过要注意活用,具体问题具体分析,如果要输出 * # & # & * # & # & * # & # & 以上代码可精简为:
Dim a As Integer, b As Integer
Do
Print "*"
b = 0
a = a + 1
Do
Print "#"
Print "&"
b = b + 1
Loop While b <= 1
Loop While a <= 2

本回答被提问者采纳

VB do while语句的问题
你用DO的时候 i 没有赋值 使 t 的值总为1 当然会一直循环下去 你用For的时候 For i = 1 To 99999999999 就是每执行一次循环 i 的值加 1 这样使 t 值不断增大 大于100000也就自动停止了 你可以加这两句(先把Dim i As Integer删了)Static i As Long Do While t < 100000 i=i+1 后面...

VB do while循环问题
循环就是为了重复执行 而你的do内循环 执行的条件是以B的值小于等于1为循环条件 如果不在内循环开始前重置循环条件的话 不管外循环的次数是多少 这个内循环只会执行一次 那就失去的内嵌循环的大部分意义了 但只要不违背语法你想如何执行代码都是你决定的 关键还得看写这段代码想实现的目的 ...

vb中do while的问题,新手求教,为什么运行出来结果是1?
变量要设为全局变量:Dim a As Double, b As Double, c As Double, s1 As DoublePrivate Sub Form_Load()a = 0b = 0c = 0d = 0s1 = 0End Sub Private Sub Command1_Click()Do While c < (10 ^ (-5))a = a + 1b = b + ac = 1 \/ bs1 = s1 + cLoopForm1.Print ...

关于VB的DO while 循环的问题..
DO WHILE的意思就是,当。。。的时候就做以下事情 所以这里就是说当 N不等于0的时候,就执行:n = InputBox("N=")If n < 0 Then f = f + 1 ElseIf n > 0 Then z = z + 1 End If 如果你输入0,N就不是不等于0了,所以循环就终止 ...

在VB程序中Do While Loop问题
do while loop 循环的执行步骤:首先判断,当满足while后面的表达时,执行do。。。loop之间的代码,执行完毕,再次判断,满足继续do...loop,不满足,则结束do循环。那么,本题首先判断y>4 由于y=4并不大于4,y>4为假,跳过do...loop循环,执行print x x=1 所以显示为1,选A 你选B,如果是do...

vb中do while循环,有一段我不明白,求各位高手指教
Do While i<101 (Do While 条件 ->表示符合 条件 的话就继续执行和 loop之间的语句)Sum=Sum+i i=i+1 Loop (循环到Do While继续判断条件)Do Until i=101 (Do Until 条件 ->表示“不”符合 条件 的话就继续执行和 loop之间的语句)Sum=Sum+i i=i+1 Loop (循环到Do Until继续判断条件)...

VB的函数问题和do while语句的一些问题~
1、因为year(x)、month(x)等函数中的x要求为日期型数据,所以在使用以上函数时,需要使用cdate将数据转换成日期型。而hour(x)、minute(x)等函数中的x要求为时间型数据,故使用这类函数时,需要使用ctime将数据转换成时间型数据。2、do while ……loop是指:“当……时,一直继续做……”。

Vb Do While循环题目
代码如下:Private Sub Form_Click() Dim s!, n% s = 0 n = 1 Do Until s >= 20 s = s + (2 * n + 1) \/ (2 * n - 1) n = n + 1 Loop Print "s=", s Print "n=", nEnd Sub运行如下图所示:...

vb,do while句的顺序问题,为什么把b=1放在do while a<10这句上面和下面...
当然不一样了,在do while a<10下面的时候,如果a<10,那么b就被赋值为1;在do while a<10上面的时候,b就相当于全局变量。a<10这个条件对b的值不产生影响。

vb do while 为什么会溢出
Do While i > 0 t = t * i i = i - 1 zz = zz + 1 Loop 然后运行,程序会溢出,中断了,这时你看一下zz的数值,是2048 然后在内while循环中,再加入几句,变成下面这样 Do While i > 0 If zz = 2048 Then Debug.Print zz,t,i End If t = t * i i = i - 1 zz = zz +...

相似回答