笑话大全网 - 爆笑笑话 - VB题解读!!!

VB题解读!!!

Option Explicit

Private Sub Form_Click()

Dim N As Integer, i As Integer, k1 As Integer, k2 As Integer, k3 As Integer, k4 As Integer

Dim bb() As Integer, Jsq As Integer

'下面开始计算

N = Val(InputBox("请输入数字"))

If N < 1 Or N > 70 Then

MsgBox "输入的数字必须在1-70之间!"

Exit Sub

End If

ReDim bb(1 To N, 1 To N) '定义数组bb(行数,列数)

Jsq = 1

For i = 1 To N \ 2 + IIf((N Mod 2) = 0, 0, 1) '循环圈数 单数的话要加一圈

'第一圈时 i=1

For k1 = i To N - i + 1 '列数 从第一列到总列数减圈数加一

bb(i, k1) = Jsq '数组(第一圈的行数,列数)=计数器

Jsq = Jsq + 1 '计数器加一

Next

For k2 = i + 1 To N - i + 1 '行数 从第一行加一 到 总行数减圈数加一

bb(k2, N - i + 1) = Jsq '数组(行数,总列数减圈数加一)=计数器

Jsq = Jsq + 1 '计数器加一

Next

For k3 = N - i To i Step -1 '列数 从总列数减圈数到圈数列

bb(N - i + 1, k3) = Jsq '数组(总行数减圈数加一,列数)=计数器

Jsq = Jsq + 1 '计数器加一

Next

For k4 = N - i To i + 1 Step -1 '行数 从总行数减圈数到圈数加一

bb(k4, i) = Jsq '数组(行数,圈数的列数)=计数器

Jsq = Jsq + 1 '计数器加一

Next

Next

'下面开始输出

For i = 1 To N '行数

For k1 = 1 To N '列数

Print bb(i, k1); '我改为;号了 这样数据的间隔不大 ,号的话间隔很大

Next

Print

Next

End Sub

其实你把输大一点的数进去分析 你会发现 其实他就是按照一个圈在加大数字 每过一圈就缩小一点