当前位置: 高中信息技术 / 综合题
  • 1. (2019·金华模拟) 幻方是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。n阶幻方是由1~n2之间的自然数组成的一个n阶方阵,其各行、各列及对角线所含的数字之和均相等。例如3阶幻方(如图1),幻和为15。

    奇数阶幻方的构造是所有幻方中最简单的,可以按照如下规则来实现:

    ⑴将1放在第一行中间一列;(如图2)

    ⑵从2开始直到n*n为止,各数按下列规则存放:

    假设当前要存放的数为k,则k存放在k-1)数的右上方并按照规则

    ①若(k-1)放在第1行且不是最后一列,则将k存放在n行,(k-1)所在列右侧;(如图3)

    ②若(k-1)放在第n列且不是第一行,则将k存放在第1列,k-1)的上1行;(如图4)

    ③若(k-1)即不在第1行也不在最后1列:

    若(k-1)右上方有数,则将k放在(k-1)的下1行的同一列。(如图5)

    若(k-1)右上方没有数,则将k放在(k-1)的右上方;(如图6)

    ④若(k-1)在第1行第n列,将k填在(k-1)的正下方(如图7)

    1. (1) 用下图的程序生成5阶幻方后,List1中的第一行显示的是

    2. (2) 30阶以内的幻方程序如下图,代码如下,请完成代码填空

          Private Sub Command1_Click()

          Dim i As Integer, i As Integer, n As Integer      ‘i表示行,j表示列

          Dim a(1 To 1000) As Integer, k As Integer      ‘数组a依次保存幻方中的数

          Dim s As String

          n= Val(Text1.Text)

          j=  ①   : a(j)=1

          i=1

          For k =2 To n*n

              If i=1 And j<>n Then

              i=n: j=j+1

              a((i-1)*n+j)=k

          ElseIf j= n And i<> 1Then

                ②   : j=1

              a((i-1)*n+j)=k

          ElseIf i=1 And j=n Then

              i+1 =1

              a((i-1)*n+j)=k

          ElseIf i <> 1 And j<> n Then

              If   ③   Then

                  i=i-1:j=j+1

              va((i-1)*n+j)=k

              Else

                  i=i+1

                  a((i-1)*n+j)=k

              End If

          End If

      Next k

      List1. Clear

      For i=1 To n

          s=“”

          For j=1 To n

              s=s+ format(a((i-1)*n+j))

          Next j

          List1AddItem s

      Next i

      End Sub

      Function format( x As Integer) As String      ‘将数字字符串格式化为3个字符长度

      Dim n As integer, i As Integer

      format =Str(x)

      n=Len(format)

      For i=1 To   ④ 

          format ="”+ format

      Next i

      End Function

       ② ③ ④ 

微信扫码预览、分享更方便