去掉最高分最低分求平均分

bohemian_c 2017-08-27 10:32:50

Private Sub Command1_Click()
Dim max As Integer, min As Integer
Dim avg As Single, sum As Single
max = 0
min = 10
Dim ary(10) As Integer
Dim i As Integer
For i = 0 To 9
Controls("text" & i + 2).Text = ary(i)
If ary(i) > max Then
max = ary(i)
End If
If ary(i) < min Then
min = ary(i)
End If
Next
Label2.Caption = "去掉一个最高分" & max
Label3.Caption = "去掉一个最低分" & min
sum = sum + ary(i)
avg = (sum - min - max) / 8
Label4.Caption = "该选手的最后得分是" & avg
End Sub




运行时,随便输入10个1-10之间的数字,结果是这样

没有报错

另外,代码有写的繁琐或不恰当的地方,欢迎批评指出

感谢。
...全文
1021 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bohemian_c 2017-08-31
  • 打赏
  • 举报
回复
引用 9 楼 Mike_Squall的回复:
为什么不用下拉列表来显示分数
感觉列表里的内容太密集,不美观
Mike_Squall 2017-08-30
  • 打赏
  • 举报
回复
为什么不用下拉列表来显示分数
舉杯邀明月 2017-08-29
  • 打赏
  • 举报
回复
“平均分”的结果,还是处理一下吧。 那么长一串小数,不觉得搞笑?
Label4.Caption = "该选手的最后得分是:" & format$(avg, "0.0#")
赵4老师 2017-08-28
  • 打赏
  • 举报
回复
引用 3 楼 qq574221329 的回复:
引用 2 楼 zhao4zhong1 的回复:
万一哪个装B评委打出1.234+5.678i的分数捏?
赵老师思维很缜密
所以说验证人输入值是否合法这一亘古难题维持了程序员这一职业不会被所谓AI淘汰。
小噤 2017-08-28
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
万一哪个装B评委打出1.234+5.678i的分数捏?
赵老师思维很缜密
赵4老师 2017-08-28
  • 打赏
  • 举报
回复
万一哪个装B评委打出1.234+5.678i的分数捏?
xdz_myfunction 2017-08-28
  • 打赏
  • 举报
回复
引用
Controls("text" & i + 2).Text = ary(i)
这行有问题,应该反过来,把text内的数值赋值给ary。 楼主最好把10个text控件做成控件数组,这样就可以简单的写成:ary(i)=val(text(i)) 还有,ary(10)最好是single,评委打分不一定是整数。
bohemian_c 2017-08-28
  • 打赏
  • 举报
回复
感谢各位大佬。改正后代码如下:
Private Sub Command1_Click()
    Dim max As Single, min As Single
    Dim avg As Single, sum As Single
    max = 0
    min = 10
    Dim ary(10) As Single
    Dim i As Integer
    For i = 0 To 9
        ary(i) = Val(Text2(i).Text)
        If ary(i) > max Then
            max = ary(i)
        End If
        If ary(i) < min Then
            min = ary(i)
        End If
        sum = sum + ary(i)
    Next
    Label2.Caption = "去掉一个最高分" & max
    Label3.Caption = "去掉一个最低分" & min
    avg = (sum - min - max) / 8
    Label4.Caption = "该选手的最后得分是" & avg
End Sub

赵4老师 2017-08-28
  • 打赏
  • 举报
回复
三四 叁拾肆 XXXIV 36,哦不,再减掉2 …… 子子孙孙无穷尽也
xdz_myfunction 2017-08-28
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
引用 3 楼 qq574221329 的回复:
[quote=引用 2 楼 zhao4zhong1 的回复:] 万一哪个装B评委打出1.234+5.678i的分数捏?
赵老师思维很缜密
所以说验证人输入值是否合法这一亘古难题维持了程序员这一职业不会被所谓AI淘汰。[/quote] 一般会在text的Lostfocus事件中,用IsNumeric函数判断,如果有区间限制的,再加个区间限制判断,比如楼主的0~10。 真如赵四老师说的有如此装逼评委,也只好睁只眼闭只眼,通通按single和谐了。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧