试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省金华十校2020届高三上学期信息技术11月模拟考试试卷

幻方是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。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)、用下图的程序生成5阶幻方后,List1中的第一行显示的是

(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

 ② ③ ④ 

举一反三
某商场元月举行VIP客户积分换购活动,VIP客户根据卡内积分多少可换取不同额度的代金券。假设VIP客户共有n名,VIP卡内积分存放在数据库“customer.accdb”的Integral表中,换购活动的VB程序代码如下,程序运行时界面如第7题图所示。工作人员在文本框Text1中输入VIP卡号后,单击“换购”按钮Command1,在文本框Text2中输出VIP客户的积分数,在标签Label3中显示可以换购的代金券额度,积分清零。按此要求编写程序如下, 但加框处代码有错,请改正。

Dim ID( ) As String    '用于存放客户卡号

Dim total( ) As Long      '用于存放积分数

Dim sc As Long                  'VIP客户人数

Dim jf As Long                  '积分数

Private Sub Command1_Click( )

  Dim k As String                '客户卡号

  Dim q As Long               '代金券额度

  Dim i As Long

  k = Text1.Text

  For i = 1 To sc     ’顺序查找

      If ID(i) = k Then

          jf = total(i)     

          cash(jf) = q               ’ ①

          Exit For

      End If

      Text2.Text = Str(jf)

      Label3.Caption = “您可换购的代金券总额为:”+ Str(q) + “元”

    Next i

  End If

End Sub

' cash函数用于计算VIP客户可换购的代金券额度

Function cash(jf As Long) As Long

  If jf >= 2000 And jf <= 20000 Then

       Cash = jf\2000*10

ElseIf jf > 20000 And jf <= 50000 Then

       Cash = jf\2000*11

ElseIf jf > 50000 And jf <= 100000 Then

       Cash = jf\2000*12

ElseIf jf > 100000 And jf <= 150000 Then

       Cash = jf\2000*13

 Else jf > 150000 Then         ’ ②

       Cash = jf\2000*14

End If

End Function

Private Sub Form_Load()

   Dim conn As New ADODB.Connection, rs As New ADODB.Recordset

   Dim intSQL As Long

   conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\ customer.accdb"

    conn.Open

   intSQL = "SELECT score  FROM Integral" 

     Set rs.ActiveConnection = conn

     rs.CursorType = adOpenStatic

     rs.Open intSQL

     sc = 0

     Do While Not rs.EOF

       sc = sc + 1

       total(sc) = rs.Fields("score")

       rs.MoveNext

     Loop

rs.Close

     conn.Close

     Set rs = Nothing

     Set conn = Nothing

End Sub

返回首页

试题篮