VB题 动态数组 循环程序

从键盘上输入若干个正整数(如果遇到负数重
新输入),如果遇到0停止输入,然后输出
(1)输入的所有正整数的平均值;
(2)高于平均值的正整数的个数
请编写程序实现,并将程序上交。
说明:正整数的个数必须在输入过程中统计出

使用动态数组完成。

程序如下:

Option Explicit

Sub Main()
    Dim nums() As Integer ' 声明动态数组
    Dim count As Integer ' 统计正整数的个数
    Dim sum As Long ' 所有正整数的和
    Dim avg As Double ' 平均值
    Dim aboveAvgCount As Integer ' 高于平均值的正整数的个数
    Dim input1 As Integer ' 输入的数值
    Dim i
    
    count = 0
    sum = 0
    aboveAvgCount = 0
    
    Do
        input1 = InputBox("请输入一个正整数:")
        If input1 > 0 Then
            count = count + 1
            sum = sum + input1
            ' 动态扩展数组并存储输入的数值
            ReDim Preserve nums(1 To count)
            nums(count) = input1
        End If
    Loop While input1 <> 0 ' 当输入0时退出循环
    
    If count > 0 Then
        avg = sum / count
        For i = 1 To count
            If nums(i) > avg Then
                aboveAvgCount = aboveAvgCount + 1
            End If
        Next
        ' 输出结果
        MsgBox "所有正整数的平均值为:" & avg & vbCrLf & _
               "高于平均值的正整数的个数为:" & aboveAvgCount
    Else
        MsgBox "未输入任何正整数!"
    End If
End Sub