posts - 70,comments - 80,trackbacks - 0
[ 题目1 ] 下面程序是建立二维 M*N 的字符数组,并求出将此数组顺时针旋转 90О 后的新数组。
答:o_v42.JPG
源程序:
Option Explicit
Private Sub form_click()
      Dim char(4, 3) As String, st(3, 4) As String
      Dim I As Integer, J As Integer, N As Integer
      For I = 1 To 4
          For J = 1 To 3
              char(I, J) = Chr(Asc("a") + N)
              N = N + 1
              Print char(I, J); " ";
          Next J
          Print
      Next I
      Print
      Call trans(char, st)
      For I = 1 To 3
          For J = 1 To 4
              Print st(I, J); " ";
          Next J
          Print
      Next I
End Sub
Private Sub trans(A() As String, B() As String)
      Dim I As Integer, J As Integer
      For I = 1 To UBound(A, 1)
          For J = 1 To UBound(A, 2)
              B(J, 4 - I + 1) = A(I, J)
          Next J
      Next I
End Sub

[题目2]编写一个辅助业务处理的程序。

[编程要求]

1.  程序参考界面如图所示,其中Label1对象用于显示不同种类面粉的单价(如图中“特一粉的单价是:1 .3元/市斤”)。编程时不得增加或减少界面对象或改变对象的种类,但界面元素的大小、位置可随意设置。

2.  实现功能:

1)       在“面粉种类”中选择面粉的种类,界面上Label1对象的说明文字将随之改变(设高精粉的单价是1.6元/市斤,特意分的单价是1.3元/市斤,普通面粉的单价是0.9元/市斤,如图所示);

2)       单击“计算”按钮,这根据输入的面粉数量以及所选的面粉的单价,求出应付粮款,并显示在相应文本框中;

3       单击清除按钮,清除两个文本框中的内容,单击退出按钮,结束程序运行。
答:o_v41.JPG
源程序:
Dim dj As Single

Private Sub Command1_Click()
If Trim(Text1.Text) = "" Then
   MsgBox "请输入面粉数量", vbOKOnly
   Text1.SetFocus
   Exit Sub
Else
   s = Val(Trim(Text1.Text))
   Text2.Text = Format(Val(Trim(Text1.Text)) * dj, "##.##")
End If
End Sub

Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Option1_Click()
If Option1.Value = True Then Label1.Caption = "高精粉的单价是:1.6元/市斤"
dj = 1.6
End Sub

Private Sub Option2_Click()
If Option2.Value = True Then Label1.Caption = "特一粉的单价是:1.3元/市斤"
dj = 1.3
End Sub

Private Sub Option3_Click()
If Option3.Value = True Then Label1.Caption = "普通面粉的单价是:0.9元/市斤"
dj = 0.9
End Sub

[题目3本程序的功能是把给定的数组中每个正整数按逆序重新排列,即将正整数的个位和最高位的数字进行交换,十位和次高位的数字进行交换等,得到一个新数,并求出每个正整数各位数字之和。
答:o_v43.JPG
源程序:
Option Explicit
Option Base 1
Private Sub rever(X() As Integer, S() As Integer)
 Dim i As Integer, a As Integer, k As Integer
 Dim j As Integer
For j = 1 To UBound(X)
     Do
         a = X(j) Mod 10
         k = k * 10 + a
         S(j) = S(j) + a
         X(j) = X(j) \ 10
         i = i + 1
     Loop Until X(j) = 0
     X(j) = k
     k = 0
Next j
End Sub

Private Sub form_click()
Dim X(3) As Integer, Sum(3) As Integer
Dim i As Integer
X(1) = 1234: X(2) = 25371: X(3) = 326
Call rever(X, Sum)
For i = 1 To 3
    Print "x="; X(i), "sum="; Sum(i)
Next i
End Sub

[题目4]  编程实现功能:

1.  单击“数组生成”按钮,程序可用随机函数生成一个三行四列的二位数组a,

要求每个数组元素均为两位随机正整数,将a 数组里元素按矩阵形式显示在图形框1中(数组元素按行显示)。

2.  单击“数组处理”按钮,则将上述生成的矩阵中的最大元素与a(1,1)元素交换,最后将结果矩阵显示到图形框2中(数组元素按行显示)。

[编程要求]

1.  程序必须采用循环结构处理。

2.  程序参考界面如图所示,其中Picture对象用于显示方阵在处理前后的内容。

    编程时不得增加或减少界面对象或改变对象的种类,但界面元素的大小、位置可随意设置。

答:o_v44.JPG
源程序:
Dim a(3, 4) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Randomize
Picture1.Cls
For i = 1 To 3
   For j = 1 To 4
      a(i, j) = Int(Rnd * 90) + 10
      Picture1.Print " " & a(i, j) & " ";
    Next j
    Picture1.Print
Next i
End Sub

Private Sub Command2_Click()
Dim k As Integer, max As Integer, i As Integer, j As Integer, t As Integer, temp As Integer
Picture2.Cls
For i = 1 To 3
   For j = 1 To 4
     If max < a(i, j) Then
       max = a(i, j)
       k = i
       t = j
     End If
    Next j
Next i
temp = a(1, 1)
a(1, 1) = a(k, t)
a(k, t) = temp
For i = 1 To 3
  For j = 1 To 4
    Picture2.Print " " & a(i, j) & " ";
  Next j
  Picture2.Print
Next i
End Sub

[题目5] 本程序功能是生成一维数组a(10),数组元素为两位随机正整数,并求该数组中第二大的数(第二大的数可以与最大的数相等)。
答:o_v45.JPG
源程序:
Private Sub form_click()
Dim a(1 To 10) As Integer
Dim i As Integer
Dim b1 As Integer, b2 As Integer
Randomize
For i = 1 To 10
    a(i) = Int(90 * Rnd) + 10
    Print a(i); "";
Next i
Print
b1 = a(1): b2 = a(2)
If b1 < b2 Then
    b1 = b2
    b2 = b1
End If
For i = 3 To 10
    If a(i) > b1 Then
        b2 = b1: b1 = a(i)
    Else
        If a(i) > b2 Then b2 = a(i)
    End If
Next i
Print "第二大数为:"; b2, "第一大数为:"; b1
End Sub

[题目6]  编程求出1000之内的所有完数。“完数”是指一个数恰好等于它的因子之和,如6的因子为1,2,3,而6=1+2+3,因而6就是完数。
答:o_v46.JPG
源程序:
Private Sub Command1_Click()
Dim a() As Integer
Dim i As Integer, sum As Integer
For i = 2 To 999
  Call fun(i, a)
  sum = 0
  For j = 1 To UBound(a)
   sum = sum + a(j)
  Next j
  If i = sum Then
     Picture1.Print i & "=";
     For j = 1 To UBound(a) - 1
      Picture1.Print a(j) & "+";
     Next j
     Picture1.Print a(UBound(a))
  End If
Next i
End Sub

Private Sub fun(ByVal x As Integer, a() As Integer)
Dim i As Integer, idx As Integer
For i = 1 To x - 1
 If x Mod i = 0 Then
   idx = idx + 1
   ReDim Preserve a(idx)
   a(idx) = i
 End If
Next i
End Sub

Private Sub Command2_Click()
  End
End Sub

[题目7] 下面程序的功能是验证在nn!之间至少有一个素数,其中n>2。可输入n=4验证。
答:o_v47.JPG
源程序:
Option Explicit
Private Sub form_click()
      Dim n As Integer, k As Long
      Dim m As Long, f As Long
      n = Val(InputBox("请输入一个大于2的整数"))
      m = 1
      For k = 1 To n
          m = m * k
      Next k
      For k = n + 1 To m - 1
           f = flag(k)
           If f = 1 Then Exit For
      Next k
      If f = 1 Then
             Print n; "与"; m; "之间的一个素数是"; k
      Else
             Print n; "与"; m; "之间没找到一个素数"
      End If
End Sub
Private Function flag(n As Long) As Integer
    Dim I As Integer
    flag = 1
    For I = 2 To Sqr(n)
        If n Mod I = 0 Then
             flag = 0
             Exit For
        End If
    Next I
End Function

[题目8] 编写一个简单运算器(可做加、减、乘、除运算)的程序。
[编程要求]

1.  程序参考界面如图,其中ComboBox对象(此处为下拉式列表框)用于列表显示运算符,编程时不得增加或减少界面对象或改变对象种类,但界面元素的大小、位置可随意设置。

2.  实现功能。

(1) 单击“计算”按钮,则根据输入操作数以及所选的运算符,求出运算结果,并显示在相应文本框中;程序应对操作数据进行校验,若为非数值型数据,要给出如图所示的信息框,并清除已输入数据,等待用户重输;若操作数合法,且要做除法运算,则应检查除数是否为0,若除数为0,则要给出如图所示的信息框,并清除已输入数据,等待用户重输(提示:可用IsNumeric(文本框名)函数测试数据)。

(2)单击“清除”按钮,清除三个文本框的内容。

(3)单击“退出”按钮,结束程序运行。  
答:  o_v481.JPG
o_v482.JPGo_v483.JPG       
源代码:
Private Sub Command1_Click()
Dim sf As String, I As Integer
Dim s1 As Single, s2 As Single, s3 As Single
If IsNumeric(Trim(Text1.Text)) Then
  If IsNumeric(Trim(Text2.Text)) Then
    s1 = Val(Text1.Text)
    s2 = Val(Text2.Text)
    If Combo1.Text = "+" Then s3 = s1 + s2
    If Combo1.Text = "-" Then s3 = s1 - s2
    If Combo1.Text = "*" Then s3 = s1 * s2
    If Combo1.Text = "/" Then
       If s2 = 0 Then
         MsgBox "除数为0,重输", vbOKOnly
         Text2.Text = ""
         Text2.SetFocus
         Exit Sub
      End If
      s3 = s1 / s2
    End If
    Text3.Text = s3
   Else
     MsgBox "操作数2为非数据值,重输", vbOKOnly
     Text2.Text = ""
     Text2.SetFocus
     Exit Sub
   End If
Else
  MsgBox "操作数1为非数据值,重输", vbOKOnly
  Text1.Text = ""
  Text1.SetFocus
  Exit Sub
End If
End Sub

Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End Sub

Private Sub Command3_Click()
End
End Sub
        
 

posted on 2006-10-02 10:25 木子李 阅读(659) 评论(0)  编辑 收藏 引用 网摘 所属分类: Visual Basic 课堂

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