在线等 关于数组元素输出的问题 请高手讲解我指出的程序中不懂的地方

来源:百度知道 编辑:UC知道 时间:2024/09/21 06:35:11
Private Sub command1_click()
Dim a(4, 5) As Integer, k As Integer
Dim i As Integer, j As Integer, s As String
k = 10
For i = 1 To 4
If i Mod 2 <> 0 Then
For j = 1 To 5
k = k + 1
a(i, j) = k
Next j
Else

For j = 5 To 1 Step -1
k = k + 1
a(i, j) = k
Next j
End If
Next i
If Check1.Value <> 1 Then
For i = 1 To 4
For j = 1 To 5
picture1.Print a(i, j)
Next j
picture1.Print
Next i
Else
For i = 1 To 4
For j = 1 To 5
s = s & Str(a(i, j))
Next j
s = s & Chr(13) & Chr(10)
Next i
Text1.Text = s
End If

End Sub
问题一 程序为什么 提示 picture1.Print a(i, j) 有错误
问题二 If i Mod 2 <> 0 的余数可以小于零 ?
问题三 k = 10
For i = 1 To 4
If i Mod 2 <> 0 Then
For j = 1 To 5
k = k + 1
a(i, j) = k
Next j
Else 为什么可以表示 第一行和第三行 数 (主要是表End If示第一行后怎么表示第三行 是通过什么 如果是通过最下面的NEXT I 那么 第一行怎么和下面表示

问题一:错误原因有两个,一个是窗体上没有picture控件,二是窗体上有picture控件,但名字不叫picture1。
问题二:如果i是负奇数,则i Mod 2=-1,如果i是正奇数,则i Mod 2=1,否则i Mod 2=0。
问题三:前面的判断是If i Mod 2 <> 0 Then ,因此只有i=1和3时才能运行,因此可以表示第一、三行。这段循环的作用是根据i的奇偶性给a(i,j)赋不同的
值。
问题四:If Check1.Value <> 1 Then 表示如果Check1控件前面没被打上勾,就...,在TEXT中的 I ,J 不是定义范围,是控制循环次数,你得好好学一下FOR循环的控制循环次数了。

第一个问题:一定要在窗体上安装一个picture控件,名字就用默认的picture1才可以,若是没有这个控件,当然提示picture1.Print a(i, j)这一句错误。

第二个问题:If i Mod 2 <> 0 这一句是判断i是否是奇数,如果是奇数则逻辑判断式的值为true。当然i除以2的余数永远不会小于零,因此这个逻辑判断式可以写成 If i Mod 2 > 0,起到的作用是一样的。之所以写成 <> 符号,只是因为习惯和看起来程序比较明了。

第三个问题:如果把程序稍简化一下就好看了:
k = 10
For i = 1 To 4
If i Mod 2 <> 0 Then
{第1段循环}
Else
{第2段循环}
End If
Next i
在这一整段中,是给矩阵赋值,i表示行,那么j代表列。
当取一个i值时(如1),首先判断是否是奇数(i=1是),若是则运行{第1段循环},若不是则运行{第2段循环},对于一个i值,只能运行一段(如i=1则运行第一段),给第i行的每个元素赋值,赋完第i行后都是接着运行end if 之后的 next 语句,再给下一个i行赋值。
其实这一段赋值是能连接起来的:i=1时,运行第一段循环,给第一行的5个元素赋值,分别是11,1