求大神解答一个VB嵌套的For循环问题,求详细点~~感激涕零啊
在窗体上画1个命令按钮,并编写如下事件过程:PrivateSubCommand1Click()Dima(3,3)Form=1To3Forn=1To3Ifn=morn=4—...
在窗体上画1个命令按钮,并编写如下事件过程:
Private Sub Command1 Click( )
Dim a(3,3)
For m=1 To 3
For n=1 To 3
If n=m or n=4—m Then
a(m.n)=m+n
Else
a(m,n)=0
End If
Print a(m,n);
Next n
Print
Next m
End Sub
运行程序,单击命令按钮,窗体上显示的内容为( )。
答案是2 0 4
0 4 0
4 0 6 展开
Private Sub Command1 Click( )
Dim a(3,3)
For m=1 To 3
For n=1 To 3
If n=m or n=4—m Then
a(m.n)=m+n
Else
a(m,n)=0
End If
Print a(m,n);
Next n
Next m
End Sub
运行程序,单击命令按钮,窗体上显示的内容为( )。
答案是2 0 4
0 4 0
4 0 6 展开
2个回答
展开全部
首先,要理解通常对数学中的矩阵,采用程序处理,都使用二维数组存放数据元素的值;
二维数组各元素以及与矩阵的对应位置关系如下:
第1列 第2列 第3列
第1行 a(1,1) a(1,2) a(1,3)
第2行 a(2,1) a(2,2) a(2,3)
第3行 a(3,1) a(3,2) a(3,3)
特别当行数=列数,这个矩阵叫方阵。
可以发现,每个元素有两个下标,第1个下标表示该元素所处的行位置,第2个下标表示该元素所处的列位置;
例如:a(1,1)表示处于第1行第1列,a(2,3)表示处于第2行第3列,等等。
其次,采用程序处理二维数组,往往用双重循环来实现,并且,外循环控制行,内循环控制列;
你这里就是用:外循环用m,内循环用n来控制实现的。
假设程序是如下情况,会输出什么?
For m = 1 To 3
For n = 1 To 3
Print m,n
Next n
Next m
对于这样的循环,可以输出:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
要仔细注意,m与n对应输出的关系!
也就是说,循环一共执行3*3=9次,
第1次,输出:m=1,n=1
第2次,输出:m=1,n=2
第3次,输出:m=1,n=3
......
现在我把程序改成
For m = 1 To 3
For n = 1 To 3
a(m,n)=1
Next n
Next m
可以知道,结果使得所有的元素都等于1了。
如果是这样
For m = 1 To 3
For n = 1 To 3
a(m,n)=0
Next n
Next m
可以知道,结果使得所有的元素都等于0了。
现在可以分析你的代码了:
For m = 1 To 3
For n = 1 To 3
if n=m Or n = 4 - m Then
a(m,n)=m + n
else
a(m,n)=0
end if
Next n
Next m
看看:一开始的图:
第1列 第2列 第3列
第1行 a(1,1) a(1,2) a(1,3)
第2行 a(2,1) a(2,2) a(2,3)
第3行 a(3,1) a(3,2) a(3,3)
当n=m,我们把这个位置上的元素,叫做矩阵的主对角线,即满足行号与列号相等。
当n=4 - m,我们把这个位置上的元素,叫做矩阵的副对角线,即满足:行号+列号 = 行数 + 1(因为是方阵,所以或者行号+列号 = 列数 + 1)。
现在用文字来描述,就是:
构造一个三阶方阵,(所谓三阶就是行列数都为3),使得其:
主、副对角线上的元素值等于该元素的行下标与列下标之和;
而其余元素值等于0。
要学好编程,这些都是基本功,估计一般读语言的,都有过做这类题目的揪心的痛苦的经历。
要坚持、努力、加油!
二维数组各元素以及与矩阵的对应位置关系如下:
第1列 第2列 第3列
第1行 a(1,1) a(1,2) a(1,3)
第2行 a(2,1) a(2,2) a(2,3)
第3行 a(3,1) a(3,2) a(3,3)
特别当行数=列数,这个矩阵叫方阵。
可以发现,每个元素有两个下标,第1个下标表示该元素所处的行位置,第2个下标表示该元素所处的列位置;
例如:a(1,1)表示处于第1行第1列,a(2,3)表示处于第2行第3列,等等。
其次,采用程序处理二维数组,往往用双重循环来实现,并且,外循环控制行,内循环控制列;
你这里就是用:外循环用m,内循环用n来控制实现的。
假设程序是如下情况,会输出什么?
For m = 1 To 3
For n = 1 To 3
Print m,n
Next n
Next m
对于这样的循环,可以输出:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
要仔细注意,m与n对应输出的关系!
也就是说,循环一共执行3*3=9次,
第1次,输出:m=1,n=1
第2次,输出:m=1,n=2
第3次,输出:m=1,n=3
......
现在我把程序改成
For m = 1 To 3
For n = 1 To 3
a(m,n)=1
Next n
Next m
可以知道,结果使得所有的元素都等于1了。
如果是这样
For m = 1 To 3
For n = 1 To 3
a(m,n)=0
Next n
Next m
可以知道,结果使得所有的元素都等于0了。
现在可以分析你的代码了:
For m = 1 To 3
For n = 1 To 3
if n=m Or n = 4 - m Then
a(m,n)=m + n
else
a(m,n)=0
end if
Next n
Next m
看看:一开始的图:
第1列 第2列 第3列
第1行 a(1,1) a(1,2) a(1,3)
第2行 a(2,1) a(2,2) a(2,3)
第3行 a(3,1) a(3,2) a(3,3)
当n=m,我们把这个位置上的元素,叫做矩阵的主对角线,即满足行号与列号相等。
当n=4 - m,我们把这个位置上的元素,叫做矩阵的副对角线,即满足:行号+列号 = 行数 + 1(因为是方阵,所以或者行号+列号 = 列数 + 1)。
现在用文字来描述,就是:
构造一个三阶方阵,(所谓三阶就是行列数都为3),使得其:
主、副对角线上的元素值等于该元素的行下标与列下标之和;
而其余元素值等于0。
要学好编程,这些都是基本功,估计一般读语言的,都有过做这类题目的揪心的痛苦的经历。
要坚持、努力、加油!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询