【高分】5道VB程序题目,有劳各位帮忙解答一下

1.
Private Sub Form_Click()
x = 5
For i = 1 To 20 Step 2
x = x + i \ 5
Next i
Print x
End Sub
程序执行之后,x的值为21.是怎么计算出来的?

2.
Private Sub Form_Click()
For i = 1 To 4
x = 4
For j = 1 To 3
x = 3
For k = 1 To 2
x = x + 6
Next k
Next j
Next i
Print x
End Sub
程序执行之后,x的值为21.是怎么计算出来的?这段程序我有点看不太懂它的执行过程,还请各位能够详解一下

3.
Private Sub Form_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的值为12.是怎么计算出来的?这段程序我有点看不太懂它的执行过程,还有:两个“a=a+1”语句有什么区别吗?分别起什么作用?还请各位能够详解一下

4.
Private Sub Form_Click()
Dim a(5)
For i = 0 To 4
a(i) = i + 1
t = i + 1
If t = 3 Then
Print a(i)
a(t - 1) = a(i - 2)
Else
a(t) = a(i)
End If
If i = 3 Then a(i + 1) = a(t - 4)
a(4) = 1
Print a(i)
Next i
End Sub
程序运行后,输出结果为1 2 3 1 4 1,是怎么计算出来的?这段程序我有点看不太懂它的执行过程,还请各位能够详解一下

5.
Option Base 1
Dim a() As Integer, m As Integer
Private Sub Command1_Click()
m = InputBox("请输入一个正整数")
ReDim a(m)
End Sub

Private Sub Command2_Click()
m = InputBox("请输入一个正整数")
ReDim a(m)
End Sub
程序运行时,单击command1后输入整数10,再单击command2后输入整数5,则数组中元素的个数是多少?怎么个计算法?

每道题目都请给出详细的思维逻辑过程,以便我能够理解它们分别是怎么得出来的,先谢谢了·~
第二题程序执行之后,x的值为15,我的输入有误,抱歉·~
回答者: 皮メ厚 - 经理 四级 : 第五道的答案是6,你能再想想是为什么吗?非常感谢你的回答·~

1.

Private Sub Form_Click()
x = 5
For i = 1 To 20 Step 2
x = x + i \ 5
Next i
Print x
End Sub

单击窗体,将5作为初始值给x,然后以i为计数进行循环,从i=1循环到i=20,每循环一次i+2(这个是关键),就是一共循环10次,这10次中i分别为1,3,5,7,9,11,13,15,17,19
每次循环x=x+i\5
第一次循环x=5+1\5
第二次循环x=5+1\5+3\5
以次类推 10次之后x=5+5/1+5/3+...+5/19
算出来x=21

2.
Private Sub Form_Click()
For i = 1 To 4
x = 4
For j = 1 To 3
x = 3
For k = 1 To 2
x = x + 6
Next k
Next j
Next i
Print x
End Sub

这道题有3个循环过程,循环的开始顺序是从外往里,当最里面的循环结束后重复次里面的循环,然后重复再次里面的循环...一直到最外层循环结束.我们拆开来看

先循环i,i=1的时候x=1,这时候进入第二个循环
再循环j,i=1,j=1的时候x=3
最后循环k,i=1,j=1,k=1的时候x=x+6,即x=9
k需要循环2次结束,i=1,j=1,k=2时x=x+6=9+6=15

因为k是最里面的循环,所以k循环结束后应该结束循环次里面的j
j需要循环3次,每次j的循环都包括了2次k的循环
i=1,j=2,k=1时x=9
i=1,j=2,k=2时x=15
i=1,j=3,k=1时x=9
i=1,j=3,k=2时x=15

j循环完了之后是i的循环,依次类推
但是这道题目由于i和j的循环过程都包含了赋值,所以i和j的循环就可以忽略了,因为不管你之前怎么循环,最后一次循环都会重新赋值给你刚才循环运算出来的数,所以我们只要循环k就行了

最后的结果是15,不知道LZ的21是怎么出来的-.-

3.
Private Sub Form_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

又是双循环的题目,i=1,j进行1-4的循环
第二句a=a+1写在if判断之外,意为无论判断结果如何a都要在原基础上+1,循环4次即a一共要在if判断的基础上+4

if判断之内的a=a+1则是满足判断条件"j能整除2"时候才执行的
j=1,3时无法整除2.a分别等于1,2
加上前面无视判断的+4,a等于6

然后i=2,进行第二次循环,过程与第一次完全一样
最终结果是12

4.
Private Sub Form_Click()
Dim a(5)
For i = 0 To 4
a(i) = i + 1
t = i + 1
If t = 3 Then
Print a(i)
a(t - 1) = a(i - 2)
Else
a(t) = a(i)
End If
If i = 3 Then a(i + 1) = a(t - 4)
a(4) = 1
Print a(i)
Next i
End Sub

执行过程很简单,先对i进行循环,在每一次循环中赋值给数组a(5)中对应的元素(第1次循环则a(0)=1,第2次则a(1)=2,依次类推),在对数组a的赋值完成后,对t进行赋值,t的值和对应的a的值是一样的

这个步骤完了之后对t进行判断,如果t=3的话(i=2时t=3)就打印对应的a(2),并且在打印完后让a(2)=a(i-2)=a(2-2)=a(0)=1;如果t≠3,则a(t)=a(i)

这样判断完了之后判断i,如果i=3的话则a(4)=a(t-4)=a(0)=1

在以上各项都进行完了之后赋值,让a(4)=1并打印a(i)
注意过程中有两个打印步骤,一个需要判断一个是随循环就打印不用判断的

i=0时打印出a(0)=1
i=1时打印出a(1)=2
i=2时先打印出满足判断的a(2)=3,再打印判断后经过重新赋值的a(2)=1
i=3时打印出a(3)=4
i=4时打印出重新赋值过的a(4)=1

最后就以
1
2
3
1
4
1
的形式出现了

5.
Option Base 1
Dim a() As Integer, m As Integer
Private Sub Command1_Click()
m = InputBox("请输入一个正整数")
ReDim a(m)
End Sub

Private Sub Command2_Click()
m = InputBox("请输入一个正整数")
ReDim a(m)
End Sub

Option Base是定义数组默认下界的一个功能,题目中的语句option base 1即意思为你定义的数组序号是从1开始的,如a(1).a(2),...

单击command1后输入10,则定义了一个数组a(10),包括了从a(1)到a(10)的十个元素.

单击command2后重新定义了数组a,刚才定义的10个元素全部被释放掉了,重新定义出来一个数组a(5),包括从a(1)到a(5)的5个元素.

(这道不一定对哦~很理论的..):)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-25
1.
x=5+1\5+3\5+5\5+7\5+9\5+11\5+13\5+15\5+17\5+19\5
=5+0+0+1+1+1+2+2+3+3+3=21
2.
15吧.
上面的循环都有把x重新赋值了.只要看最后一步.x=3下面x=x+6执行两次
x=3+6+6=15
3.
i=1 j=1 2 3 4 当j=1或3时才执行if里面的a=a+1。 if 外面的if 每次都要执行。所以一共执行6次a=a+1 a=6
i=2 同上。就知道a=6*2=12
第2个回答  2009-08-27
个人认为第五题的6有问题,如果把OPTION BASE 1 去掉就是六
redim语句会重新定义数组内容,里面的原有东东会全部清除,所以只要看按钮2
redim a(5)数组的内容就 ,包括从a(1)到a(5)的5个元素 ,答案就应该是5
相似回答