求大佬解这道编程题🙏
vb吧
全部回复
仅看楼主
level 1
jackDuXiu 楼主
从键盘上输入一批正整数(如果遇到负数重新输入,如果遇到0停止输入),输出:
(1)输入的正整数的平均值;
(2)高于平均值的正整数的个数。
2022年04月18日 07点04分 1
level 15
定义一个动态数组
使用Do...Loop输入数据,先判断输入的数的符号,如果是负数则舍弃这个数并提示重新输入,如果是0则退出循环,如果是正数则在数组中新增一个元素,将输入的数赋值给该元素,并且在累加变量当中加上这个数
退出上述循环后,求出所有数字的平均值,再循环遍历一次数组,依次将每个数与平均值比较,如果大于平均值,则计数加1
最后输出平均值和统计出的计数
2022年04月18日 07点04分 2
谢谢您的指点,请问您能展示一下那个负数舍弃并重新输入具体该怎么实现,还有就是动态数组该怎么使用呢?这块老师没有讲就布置作业了😢
2022年04月18日 07点04分
楼主做出来了吗
2022年04月20日 12点04分
level 15
所谓舍弃数据,就是不做“新增一个数组元素并赋值”这件事,大概像这样:
If x < 0 Then
MsgBox "请重新输入!"
Else
ReDim Preserve a(k)
a(k) = x
k = k + 1
End If
顺便也展示了动态数组当中新增元素的方法,这个数组的定义如下:
Dim a() As Integer
上面的k则表示数组当中的元素个数,而数组的下标范围则是从0到k-1
2022年04月18日 08点04分 3
level 1
楼主能教教我吗,我也不会
2022年04月20日 07点04分 4
level 1
米库大神 威武
2022年04月20日 10点04分 5
level 1
你是郑大的吧!动态数组是讲过的
2022年04月20日 11点04分 6
同学你会吗帮一下呗
2022年04月20日 12点04分
@翺胥 我不会,因为我也是郑大的[黑线],我来贴吧求答案
2022年04月20日 12点04分
level 1
Private Sub Form_Click()
Dim a(), b(), i As Integer, j As Integer, ave As Single, sum As Single, num As Integer
i = 0
j = 0
ave = 0
num = 0
ReDim Preserve a(i)
Do
a(i) = Val(InputBox("输入正整数:"))
If a(i) = 0 Then Exit Do
sum = sum + a(i)
i = i + 1
ReDim Preserve a(i)
Loop
ave = sum / i
For i = 1 To LBound(a) + UBound(a) - 1
If a(i) > ave Then
num = num + 1
i = i + 1
End If
Next
Print "平均数:" & ave
Print "超过平均数个数:" & num
End Sub
2022年04月20日 12点04分 7
负数这块不太会有大佬帮一下吗
2022年04月20日 12点04分
level 15
在7楼的基础上改一段代码出来:
Dim a() As Integer, i As Integer, sum As Integer, ave As Single, num As Integer
num = Val(InputBox("输入正整数:"))
Do Until num = 0
If num < 0 Then
MsgBox "请重新输入!"
Else
ReDim Preserve a(i)
a(i) = num
i = i + 1
End If
num = Val(InputBox("输入正整数:"))
Loop
ave = sum / i
num = 0
For i = 0 To UBound(a)
If a(i) > ave Then num = num + 1
Next i
Print "平均数:"; ave
Print "超过平均数个数:"; num
2022年04月20日 12点04分 8
看到有人用这段代码了,我也来检查一下,确实少了点东西,循环里没求和还玩个毛线[滑稽]在i=i+1前面加一句sum=sum+num;另外,如果一上来就输入0,会在求平均数时报错,可以在循环之后判断如果i=0则给个提示“没有输入数字”,否则再进行后续计算
2022年04月21日 14点04分
大佬你这个是完整的流程吗
2022年04月20日 12点04分
补充一点,中间有一句num=0是没必要写的,因为前面的循环结束时num就是0
2022年04月20日 13点04分
可是怎么没有结束的按钮🥺
2022年04月22日 12点04分
level 8
2022年04月22日 13点04分 10
level 11
Option Explicit
Private Sub Command1_Click()
Dim a() As Long
Dim b As Long
Dim i As Integer
Dim j As Integer
Dim sum As Double
Dim avg As Double
i = 1
Do
b = Val(InputBox("请输入第" & i & "个正整数"))
If b = 0 Then
Exit Do
ElseIf b < 0 Then
MsgBox "输入的是负数,请重新输入!"
Else
ReDim Preserve a(1 To i)
a(i) = b
sum = sum + b
i = i + 1
End If
Loop
If i = 1 Then
Print "没有输入正整数。"
Else
avg = sum / (i - 1)
For i = LBound(a) To UBound(a)
If a(i) > avg Then j = j + 1
Next i
Print "输入的正整数的平均值:" & avg
Print "高于平均值的正整数的个数:" & j
End If
End Sub
2022年04月22日 15点04分 11
1