【正确答案】用数组str(8)来接收InputBox输入的8个数,InputBox的格式为:InputBox(提示[,标题][,默认][,x坐标位置][.Y坐标位置]);Enabled属性可设置控件是否可用,当该值为True时可用,为False时不可用(灰色);Val()函数将字符转换成数值。
根据题意,将5个命令按钮和3个文本框控件添加到窗体中,命令按钮的名称分别为Command1、Command2、Command3、Command4和Command5,Caption属性分别为“读取数据”、“升序显示”、“平均值”、“清空”和“关闭”,文本框的名称分别为Text1、Text2和Text3,Text属性都为空。双击Command1进入代码窗口,补充后的代码如下:
Dim a(8) As Long
Dim str(8) As String
Private Sub Command1_Click()
Dim strl As String
Dim str2 As String
Dim str3 As String
Dim i As Integer
str3=" "
For i=1 To 8
str2=i
str1="输入第"
str1=str1+str2
str1=str1+"个数"
str(i)=
InputBox(str1)
If str(i)=" "Then '如果按取消则重新初始化对话框
Form_Load
End If
While Asc(str(i))>Asc("9") Or Asc(str(i))<Asc("0")
If str(i)=" "Then
Form_Load
End If
str(i)=InputBox("输入数据无效,请重新输入:")
Wend
a(i)=Val(str(i))
str3=str3+str(i)+" "
Next i
Command1.Enabled=False
Command2.Enabled=True
Command3.Enabled=True
Command4.Enabled=True
Text1.Text=str3
End Sub
Private Sub Command2_Click()
Dim i As Integer
Dim k As Integer
Dimj As Integer
Dim temp As Long
Dim str As String
Dim temp As String
For i=1 To 8 '升序排列
temp=a(i)
For j=0 To i
If a(j)
>temp Then '读取的数据比原位置的数据大
For k=i To j+1 Step-1
a(k)=a(k-1) '数据向后移
Next k
a(j)=temp
Exit For End If
Next j
Next i
For i=1 To 8
temp=a(i)
str=str+temp+" "
Next i
Text2.Text=str
End Sub
Private Sub Command3_Click() '求平均数
Dim i As Integer
Dim total As Long
total=0
For i=1 To 8
total=total+a(i)
Next i
total=total/8
Text3.Text=total
Command1.Enabled=False
Command2.Enabled=True
Command3.Enabled=False
Command4.Enabled=True
End Sub
Private Sub Command4_Click() '清空所有文本框
Text1.Text=" "
Text2.Text=" "
Text3.Text=" "
Command1.Enabled=True
Command2.Enabled=False
Command3.Enabled=False
Command4.Enabled=False
End Sub
Private Sub Command5_Click() '关闭对话框
Unload Me End Sub
Private Sub Form_Load() '初始化对话框
Command1.Enabled=True
Command2.Enabled=False
Command3.Enabled=False
Command4.Enabled=False
Command5.Enabled=True
End Sub
单击
