posts - 70,comments - 80,trackbacks - 0

【题目1】找出10至100之间的互质数(即这些数中任意两个数的最大公约数为1)。

答:o_v91.JPG

源程序:

Private Sub Command1_Click()

    Dim A() As Integer, I As Integer, J As Integer, Logic As Boolean

    Dim K As Integer

    ReDim A(1)

    A(1) = 10

    K = 1

    For I = 11 To 100

        Logic = False

        Call Sub1(A, I, Logic)

        If Logic Then

            K = K + 1

            ReDim Preserve A(K)

            A(K) = I

        End If

    Next I

    For I = 1 To UBound(A)

          Text1 = Text1 & Str(A(I))

          If I Mod 5 = 0 Then Text1 = Text1 & vbCrLf

    Next I

End Sub

 

Private Sub Sub1(A() As Integer, N As Integer, F As Boolean)

    Dim I As Integer, J As Integer, Ub As Integer

    Ub = UBound(A)

    For I = 1 To Ub

          For J = 2 To A(I)

              If A(I) Mod J = 0 And N Mod J = 0 Then

                  Exit Sub

              End If

          Next J

        

    Next I

    F = True

End Sub

 

【题目2】本程序功能是:随机生成15个3位正整数,找出其中的升序数并移动放置到数列的左端;非升序数放置在数列右边。升序数是指其各位数字从高位到低位,一个比一个大的整数,如134、257、389等均为升序数。

答:o_v92.JPG

源程序:

Option Explicit

Private Sub Command1_Click()

    Dim a(15) As Integer, i As Integer

    Dim st As String, t As Integer, J As Integer

    Randomize

    For i = 1 To 15

        a(i) = Int(Rnd * 900) + 100

        st = st & Str(a(i))

    Next i

    Text1 = st

    For i = 1 To 15

        If flag(a(i)) Then

            t = a(i)

            For J = i - 1 To 1 Step -1

                a(J + 1) = a(J)

            Next J

            a(1) = t

        End If

    Next i

    st = ""

    For i = 1 To 15

        st = st & Str(a(i))

    Next i

    Text2 = st

End Sub

Private Function flag(ByVal N As Integer) As Boolean

    Dim i As Integer, a(3) As Integer

    For i = 1 To 3

a(i) = Mid(CStr(N), i, 1)

Next i

If a(1) < a(2) And a(2) < a(3) Then

flag = True

Else

flag = False

End If

End Function

 

【题目3】找出50以内的所有不可表示成两个平方数之和的数。
【编程要求】
1、 按“开始”按钮,则开始运行程序,按图示格式将符合条件的数显示在多行文本框中,每行显示5个数;按“清理”按钮,则将文本框清空;按“结束”按钮,结束程序运行;
2、 程序至少要有一个通用过程,该过程的功能是判断一个数是否是平方数;
3、 显示在文本框中的数据必须按参考界面中的形式对齐。

答:o_v93.JPG

源程序:

Private Sub Command1_Click()

   Dim i As Integer

   For i = 1 To 50

      If Not flg(i) Then

         Text1.Text = Text1.Text & Str(i) & "  "

         If Len(CStr(i)) = 1 Then Text1.Text = Text1.Text & " "

        

         m = m + 1

         If m Mod 5 = 0 Then Text1.Text = Text1.Text & vbCrLf

      End If

   Next

       

End Sub

 

Public Function flg(i As Integer) As Boolean

flg = False

For J = 1 To Sqr(50)

         For k = 1 To Sqr(50)

            If i = J ^ 2 + k ^ 2 Then

                flg = True

                Exit Function

            End If

          Next k

      Next J

End Function

 

Private Sub Command2_Click()

Text1.Text = ""

End Sub

 

Private Sub Command3_Click()

End

End Sub

 

【题目4】分离数字串。从一个由若干个整数及带小数点的实型数组成的数字字符串(各个数之间由非数字字符分隔)中把整型数与实型数分离出来并分别输出到两个列表框中。

答:o_v94.JPG

源程序:

Private Function flag(s As String) As Boolean

    If InStr(s, ".") = 0 Then

        flag = True

    Else

        flag = False

    End If

End Function

 

Private Sub Command1_Click()

    Dim s As String, st As String, i As Integer

    Dim N As Integer, st1 As String

    s = Text1

    For i = 1 To Len(s)

        st1 = Mid(s, i, 1)

        If st1 >= "0" And st1 <= "9" Or st1 = "." Then

            st = st & st1

        Else

            If st <> "" Then

                If flag(st) Then

                    List1.AddItem st

                Else

                    List2.AddItem st

                End If

            End If

            st = ""

        End If

Next i

If st <> "" Then

    If flag(st) Then

        List1.AddItem st

    Else

        List2.AddItem st

    End If

End If

End Sub

 

【题目5】随机生成15个两位正整数,从中找出所有的素数,并记下它是第几个数,再找出其中最大的素数,并给出它的位置。
【编程要求】
1、 单击“执行”按钮,则随机生成15个两位正整数,并显示在文本框Text1中;然后从中找出所有的素数,并记下它是第几个数,按图示方式显示在列表框List1中,并将其中最大的素数及其位置分别显示在文本框Text2和Text3;
2、 程序中至少包含一个判断某数是否为素数的通用(函数)过程。

答:o_v95.JPG

源程序:

Private Sub Command1_Click()

   Dim a(15) As Integer, i As Integer, b(15) As Integer

   For i = 1 To 15

      a(i) = Int(Rnd * 90) + 10

      Text1.Text = Text1.Text & Str(a(i))

   Next i

   Call sushu(a, b)

   For i = 1 To 15

      If b(i) <> 0 Then

         List1.AddItem b(i) & "---" & i

      End If

   Next

   For i = 1 To 14

      M = 1

      For J = 2 To 15

         If b(M) < b(J) Then M = J

      Next

   Next

   Text2.Text = b(M)

   Text3.Text = M

End Sub

 

Public Sub sushu(a() As Integer, b() As Integer)

   For i = 1 To 15

      For J = 2 To Sqr(a(i))

         If a(i) Mod J = 0 Then Exit For

      Next J

      If J > i Then b(i) = a(i)

   Next i      

End Sub

 

【题目6】设N>6,A1,A2,A3,……AK是所有小于N且与N互质(即它和N的最大公约数为1)的整数,找出50以内的所有非素数并且满足A2-A1=A3-A2=A4-A3……条件的数。

答:o_v96.JPG

源程序:

Option Explicit

Private Sub Command1_Click()

    Dim Factor() As Integer, i As Integer, n As Long, flg As Boolean

    n = 7

   

    Do While n <= 50

        flg = False

        Call Prime(Factor, n, flg)

        If flg Then

            Text1 = Text1 & Right(" " & Str(n), 2) & ":"

            For i = 1 To UBound(Factor)

                Text1 = Text1 & Str(Factor(i))

            Next i

            Text1 = Text1 & vbCrLf

        End If

        n = n + 1

    Loop

End Sub

 

Private Sub Prime(F() As Integer, n As Long, Logic As Boolean)

    Dim i As Integer, J As Integer, K As Integer, M As Integer

    ReDim F(1)

    F(1) = 1

    For i = 2 To n - 1

        For J = 2 To i

            If i Mod J = 0 And n Mod J = 0 Then

                  Exit For

            End If

        Next J

        If J > i Then

            ReDim Preserve F(UBound(F) + 1)

            F(UBound(F)) = i

        End If

    Next i

    M = F(2) - F(1)

 

    For i = 2 To UBound(F) - 1

        If M = 1 Or M <> F(i + 1) - F(i) Then Exit Sub

    Next i

    Logic = True

End Sub

 

【题目7】找出50以内的所有的无平方因子数。若一个数不能被大于1的平方数整除,则该数就是一个无平方因子数。
【编程要求】
1、 按“开始”按钮,则开始运行程序,将结果按图示格式显示于多行文本框中,按“清理”按钮,则将文本框清空;按“结束”按钮,结束程序运行;
2、 程序必须包含一个判断因子是否是平方数的通用过程;
3、 显示在文本框中的运行结果必须按参考界面给出的形式对齐。

答:o_v97.JPG

源程序:

Private Sub Command1_Click()

   Dim a() As Integer, i As Integer

   Text1.Text = Text1.Text & "数据    因子" & vbCrLf

   For i = 1 To 50

      If flg(i, a) Then

         If Len(CStr(i)) = 1 Then Text1 = Text1.Text & " "

         Text1.Text = Text1.Text & Str(i) & ":    "

         For J = 1 To UBound(a)

            Text1.Text = Text1.Text & Str(a(J))

         Next J

         Text1.Text = Text1.Text & vbCrLf

      End If

   Next i

End Sub

 

Public Function flg(n As Integer, a() As Integer) As Boolean

   ReDim a(1)

   a(1) = 1

   K = K + 1

   flg = True

   For i = 2 To n

       If n Mod i = 0 And n Mod i ^ 2 <> 0 Then

         ReDim Preserve a(UBound(a) + 1)

         a(UBound(a)) = i

      ElseIf n Mod i = 0 And n Mod i ^ 2 = 0 Then

         flg = False

      End If

    Next i

End Function

 

Private Sub Command2_Click()

Text1.Text = ""

End Sub

 

Private Sub Command3_Click()

End

End Sub

 

【题目8】在给定的4×10二维数组中,从每行中找出与该行其余9个数均互质的数。两个数互质是指它们的最大公约数为1。

答:o_v98.JPG

源程序:

Option Base 1

Private Sub Command1_Click()

    Dim A(4, 10) As Integer, i As Integer, J As Integer, n As Integer

    Dim B() As Integer

    For i = 1 To 4

          For J = 1 To 10

              A(i, J) = i * 10 + J

              Picture1.Print A(i, J);

          Next J

              Picture1.Print

              Call Sub1(A, i, B)

              For n = 1 To UBound(B)

                  Picture2.Print Str(B(n));

              Next n

                  Picture2.Print

    Next i

End Sub

 

Private Sub Sub1(A() As Integer, i As Integer, B() As Integer)

    Dim M As Integer, J As Integer, K As Integer, L As Boolean

    Dim Idx As Integer

    For J = 1 To 10

        L = True

        For M = 1 To 10

            If J <> M Then

                For K = 2 To A(i, J)

                    If A(i, J) Mod K = 0 And A(i, M) Mod K = 0 Then

                        L = False

                        Exit For

                    End If

                Next K

            End If

            If Not L Then Exit For

        Next M

        If L Then

            Idx = Idx + 1

            ReDim Preserve B(Idx)

            B(Idx) = A(i, J)

        End If

    Next J

End Sub

 

【题目9】找出100至200之间且满足该数等于两个素数之积的所有整数。

答:o_v99.JPG

源程序:

Option Explicit

Option Base 1

Private Sub Command1_Click()

    Dim I As Integer, Flg As Boolean, S1 As Integer, S2 As Integer

    Dim J As Integer, K As Integer, P() As Integer

    ReDim P(1)

    P(1) = 2

     For I = 3 To 200 Step 2

          For J = 2 To Sqr(I)

              If I Mod J = 0 Then Exit For

          Next J

          If J > Sqr(I) Then

              ReDim Preserve P(UBound(P) + 1)

              P(UBound(P)) = I

          End If

    Next I

    For I = 100 To 200

        If Fun(I, P, S1, S2) Then

            Text1 = Text1 & Str(I) & ":" & Str(S1) & "*" & Str(S2) & vbCrLf

        End If

    Next I

End Sub

 

Private Function Fun(N As Integer, P() As Integer, S1 As Integer, S2 As Integer) As Boolean

     Dim I As Integer, J As Integer, M As Long

    For I = 1 To UBound(P) - 1

          For J = I + 1 To UBound(P)

              M = CLng(P(I)) * P(J)

              If M = N Then

                  S1 = P(I): S2 = P(J)

                  Fun = True

                  Exit Function

                 

              End If

          Next J

    Next I

End Function

 

【题目10】编写程序,找出所有满足下述条件的n位数(n=2、3、4):当他们乘以数2、3、4、5、6、7、8、9时,其各位数字之和不变。

【编程要求】
1、 运行程序,在文本框Text1中输入数字的位数,按“开始”按钮,则将符合条件的数按图标格式显示在多行文本框Text2中;按“清理”按钮,则将两个文本框清空,并将焦点置于Text1中;按“结束”按钮,结束程序运行;
2、 程序至少要包含一个求某数各位数字之和的通用过程。

答:o_v910.JPG

源程序:

Private Sub Command1_Click()

   Dim N As Integer, I As Long

   Dim L As Integer, R As Integer

   N = Val(Text1.Text)

   L = 10 ^ (N - 1)  '生成最小n位数 如n=2  L=10

   R = 10 ^ N - 1    '生成最大n位数 如n=2  R=99

   For I = L To R

      Flg = True

      s = sum(I)     '求i的各位数之和

      For J = 2 To 9

         '判断i×j(2,3,4,5…9)的各位数之和与i的各位数之和是否相等

         If s <> sum(I * J) Then

            Flg = False

            Exit For

         End If

      Next

      If Flg = True Then    '只有各位数之和与i的各位数之和相等时flg才为true

         Text2.Text = Text2.Text & I & ":" & vbCrLf

         For J = 2 To 9

            Text2.Text = Text2.Text & Str(I * J)

         Next J

         Text2.Text = Text2.Text & vbCrLf

      End If

   Next I

End Sub

 

Public Function sum(M As Long) As Integer

Dim N As Integer, I As Integer

   N = Len(CStr(M))   '求m的位数

   For I = 1 To N

      sum = sum + Val(Mid(CStr(M), I, 1))

   Next I

End Function

 

Private Sub Command2_Click()

Text1.Text = ""

Text2.Text = ""

End Sub

 

Private Sub Command3_Click()

End

End Sub

 

【题目11】随机生成范围在10至60之间的20个不同的整数,从中找出所有的由三个数构成的组合,使得每个组合中的三个数之和均为110。

答:o_v911.JPG

源程序:

Option Explicit

Private Sub Command1_Click()

    Dim I As Integer, J As Integer, B() As Integer, K As Integer

    Call Sub1(B)

    For I = 1 To 20

          For J = 1 To 20

              If J > I Then

                  For K = 1 To 20

                      If I <> K And K > J Then

                          If B(I) + B(J) + B(K) = 110 Then

                              List1.AddItem Str(B(I)) & Str(B(J)) & Str(B(K))

                          End If

                      End If

                  Next K

              End If

          Next J

    Next I

End Sub

 

Private Sub Sub1(a() As Integer)

    Dim I As Integer, J As Integer, K As Integer

    I = 1

    ReDim a(I)

    a(I) = Int(51 * Rnd) + 10

    Text1 = Text1 & Str(a(I))

    Do

        K = Int(51 * Rnd) + 10

        For J = I To 1 Step -1

            If K = a(J) Then Exit For

        Next J

        If J < 1 Then

            I = I + 1

            ReDim Preserve a(I)

            a(I) = K

            Text1 = Text1 & Str(K)

            If I Mod 5 = 0 Then Text1 = Text1 & vbCrLf

           

        End If

    Loop While I < 20

End Sub

 

【题目12】编写程序,其功能是:将随机生成的10个3位正整数,按行逐个显示在一个多行文本框中,再判断该数是升序数还是降底数,并将判断结果按图所示显示到列表框中。升序数是指其各位数字从高位到低位,一个比一个大的整数,如134、257、389等均为升序数;降序数则反之。

【编程要求】
1、 按“执行”按钮,则开始运行程序,将10个随机数按图标格式显示在多行文本框Text1中,将判断结果按图示格式显示在列表框List1中;按“清除”按钮,则将文本框和列表框清空;按“退出”按钮,结束程序运行;
2、 程序中至少包含一个判断某数是升序还是降序数的通用(函数)过程。

答:o_v912.JPG

源程序:

Private Sub Command1_Click()

   Dim a(10) As Integer

   Randomize

   Text1.Text = ""

   List1.Clear

   For I = 1 To 10

      a(I) = Int(Rnd * 900) + 100

      Text1.Text = Text1.Text & a(I) & vbCrLf

      s = st(a(I))

      List1.AddItem s

   Next I

End Sub

 

Public Function st(n As Integer) As String

   Dim a(3) As Integer

   For I = 1 To 3

      a(I) = Mid(CStr(n), I, 1)

   Next

   If a(1) < a(2) And a(2) < a(3) Then

      st = "=>升序数"

   ElseIf a(1) > a(2) And a(2) > a(3) Then

      st = "=>降序数"

   Else

      st = "=>"

   End If

End Function

 

Private Sub Command2_Click()

Text1.Text = ""

List1.Clear

End Sub

 

Private Sub Command3_Click()

End

End Sub

posted on 2006-10-04 13:53 木子李 阅读(1854) 评论(1)  编辑 收藏 引用 网摘 所属分类: Visual Basic 课堂

FeedBack:
# re: 江苏省等级考试二级VB上机试卷2004年(春)及参考答案
2007-08-27 09:35 | ANNE
强啊 佩服 做我家教吧 啊好啊 没工资的哦!!!~~~  回复  更多评论
  

只有注册用户登录后才能发表评论。