大一vb编程数组类基本问题。。。求大神。

题目是这样的:设计一个窗体,在窗体的单击事件中编程实现:输出5行5列方阵,使对角线上元素为1,其他元素为0。写的代码是这样的PrivateSubForm_Click()D... 题目是这样的:
设计一个窗体,在窗体的单击事件中编程实现:
输出5行5列方阵,使对角线上元素为1,其他元素为0。

写的代码是这样的

Private Sub Form_Click()
Dim a(1 To 5, 1 To 5) as integer,i as integer,j as integer

For i = 1 To 5
For j = 1 To 5
a(i, j) = 0
If i = j Then
a(i, j) = 1
End If
If i + j = 1 + 5 Then
a(i, j) = 1
End If
Next j
Next i
For i = 1 To 5
For j = 1 To 5
Print a(i, j);
Next j
Print
Next i
End Sub

我的疑问:为什么 For i = 1 To 5。 For j = 1 To 5 要重复两遍?endif 完后再next 循环后直接print 不可以吗??
展开
 我来答
书狂1979
2014-01-02 · TA获得超过155个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:180万
展开全部

直接循环一遍也可以,只是各人的思路不一样,出题人估计是怕在一遍循环中又是赋值,又是输出不好理解,如果你可以理解,当然可以只循环一遍,这样效率更高啊。

再有,一般外层循环控制行数,内层循环控制列数,判断控制应该赋值或输出的内容。

例如:

Private Sub Form_Click()
Dim a(1 To 5, 1 To 5) As Integer, i As Integer, j As Integer
For i = 1 To 5
    For j = 1 To 5
       If i = j Or i + j = 1 + 5 Then
            a(i, j) = 1
        Else
            a(i, j) = 0
        End If
        Print a(i, j);
    Next j
    Print
Next i
End Sub
bz144
2014-01-02 · TA获得超过1825个赞
知道小有建树答主
回答量:1096
采纳率:89%
帮助的人:272万
展开全部
可以将 Pinnt a(i,j) 放在第一个循环Endif之后,Next j 之前,省略第二组循环。估计这样做是为了增加程序可读性吧。
追问
哦,对这样做确实可以的!难道真的是闲的蛋疼才输两遍? 什么增强可读性不懂啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QiNgScHen
2014-01-02 · 超过15用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:31.5万
展开全部
第一遍循环是形成数据,第二遍循环是打印结果,这是两个过程,也就是计算和显示分开。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雕与蝶
2014-01-02
知道答主
回答量:49
采纳率:0%
帮助的人:31.5万
展开全部
这个是vb??好像问下你是哪个大学的,现在还有交vb的?晕,这个似乎过时了吧亲
追问
绝对要学万恶的vb啊 我也不知道我个学财务的学这个有什么用
追答
您要真心是学财务的,那么您还真得下点功夫学学vb哦亲,不是说vb不行了,关键是以后你们财务做帐用到那个什么excel可是微软的哦亲 ,里面有个什么vba尼玛整个就是vb的特殊版本,所以您必须得下点功夫了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kevin_wmj
2014-01-02 · TA获得超过396个赞
知道小有建树答主
回答量:83
采纳率:100%
帮助的人:67.1万
展开全部
可以,从程序的执行速度上考虑本来就不应该后面专门再用For循环输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式