VB基础问题:动态数组和循环结构应用

img

问题:
1.未规定输入值个数时,无法明确for循环变量终值
2.如何使用inputbox给动态数组赋值
3.“遇到0停止输入”可以通过do until或if then exit do实现,但“遇负数重新输入”如何实现?
inputbox输入不符条件的值时,可以只清除刚输入的值,并重新输入,且不计入循环数统计吗?

(大一文科生在线为公修课头秃,虚心请教各位专业人士!)

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
以下是使用 VB 编写的解决上述问题的代码,实现了从键盘输入正整数并计算平均值及高于平均值的正整数个数的功能:

Option Explicit

Sub Main()

    Dim numbers() As Integer ' 定义动态数组
    Dim input As String ' 输入的字符串
    Dim count As Integer ' 正整数个数
    Dim sum As Integer ' 正整数之和
    Dim avg As Single ' 平均值
    Dim aboveAvgCount As Integer ' 高于平均值的正整数个数
    Dim i As Integer ' 循环变量

    ' 初始化数组
    ReDim numbers(0)
    count = 0
    sum = 0

    ' 循环输入正整数
    Do
        input = InputBox("请输入一个正整数(输入负数重新输入,输入0停止输入):")
        If IsNumeric(input) And Val(input) > 0 Then
            ' 输入值为正整数
            count = count + 1
            sum = sum + Val(input)
            ReDim Preserve numbers(count - 1)
            numbers(count - 1) = Val(input)
        ElseIf Val(input) < 0 Then
            ' 输入值为负数,重新输入
            MsgBox "输入值为负数,请重新输入。"
        ElseIf Val(input) = 0 Then
            ' 输入值为0,停止输入
            Exit Do
        Else
            ' 输入值不合法,重新输入
            MsgBox "输入值不合法,请重新输入。"
        End If
    Loop

    ' 计算平均值及高于平均值的正整数个数
    If count > 0 Then
        avg = sum / count
        For i = 0 To count - 1
            If numbers(i) > avg Then
                aboveAvgCount = aboveAvgCount + 1
            End If
        Next i
    End If

    ' 输出结果
    MsgBox "输入的正整数平均值为:" & avg & vbCrLf & _
        "高于平均值的正整数个数为:" & aboveAvgCount

End Sub

代码中使用了动态数组来存储输入的正整数,并使用 Do...Loop 循环来实现输入和判断条件。当输入值为负数或非法值时,通过 MsgBox 函数提示用户重新输入。计算平均值和高于平均值的正整数个数的过程使用了 for 循环。最后使用 MsgBox 函数输出结果。

需要注意的是,在输入值为负数或非法值时,代码中只清除刚输入的值,并不计入循环数统计。如果需要计入循环数统计,可以在条件判断语句中进行修改。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢