查看: 3007|回复: 9
收起左侧

[已解决] 一道VB编程题

 关闭 [复制链接]
derek2005
发表于 2008-4-28 20:48:28 | 显示全部楼层 |阅读模式
题目是:某次大奖赛,有八名评委,请设计几面,编写程序实现输入8位评委的打分,自动显示参赛者的得分。得分计算方法:8位评委的打分中去掉最高和最低的得分,求出余下分数的平均分即为参赛者的得分

扩展上一题的功能,如果有10位选手参加大奖赛,请按上题的方法分别计算出各位选手得分,然后安由高到底排序,显示名次表,项目为:名次,选手编号,得分

算法提示:定义一个2维数组,用于存放选手编号和得分

我编的时候,对一位选手打分显示成功,但对10位选手时不行啊,(就是扩展要做的那个),我后面显示出来的分数都是0啊

我的代码如下:
Private Sub Command1_Click()
Dim a(7) As Integer
Dim i As Integer
Dim Min As Single
Dim Max As Single
Dim Sum As Single
Dim Average As Single
a(0) = Val(Text1.Text)
a(1) = Val(Text2.Text)
a(2) = Val(Text3.Text)
a(3) = Val(Text4.Text)
a(4) = Val(Text5.Text)
a(5) = Val(Text6.Text)
a(6) = Val(Text7.Text)
a(7) = Val(Text8.Text)
Sum = Sum + a(0)
Max = a(0)
Min = a(0)
For i = 1 To 7
If Min > a(i) Then
Min = a(i)
End If
If Max < a(i) Then
Max = a(i)
End If
Sum = Sum + a(i)
Next i
Average = (Sum - Min - Max) / 6
Label1.Caption = Round(Val(Average), 2)
End Sub


Private Sub Command2_Click()
Dim iArry(1 To 10, 0 To 7) As Long
Dim b() As Integer
Dim Average As Single
Dim j As Integer
Dim k As Integer
Dim s As Integer
Dim h As Integer
Dim t
ReDim b(10)
For j = 1 To 10
b(j) = Round(Val(Average), 2)
Next j
For j = 1 To 9
k = j
For s = j + 1 To 10
If b(k) < b(s) Then k = s
Next s
If k <> j Then
t = b(j): b(j) = b(k): b(k) = t
t = j: j = k: k = t
End If
Next j
Cls
For h = 1 To 10
Picture1.Print h, j, b(j)
Next h
End Sub

[ 本帖最后由 derek2005 于 2008-4-29 11:29 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
wuhaomh
头像被屏蔽
发表于 2008-4-28 22:08:15 | 显示全部楼层
???不知楼主想问什么呢?
derek2005
 楼主| 发表于 2008-4-29 11:28:48 | 显示全部楼层
原帖由 wuhaomh 于 2008-4-28 22:08 发表
???不知楼主想问什么呢?
我编的时候,对一位选手打分显示成功,但对10位选手时不行啊,(就是扩展要做的那个),我后面显示出来的分数都是0啊
qazxsw21
发表于 2008-4-29 15:58:59 | 显示全部楼层
Command1你只定义了一个一位数组,它只能计算得分,缺少保存得分的程序段
Command2你定义数组时使用了“ReDim”,它又清空了你的b(j)
所以是零

你最后的那个循环应该套住整个Command2


你可以定义几个全局变量。

[ 本帖最后由 qazxsw21 于 2008-4-29 17:33 编辑 ]
derek2005
 楼主| 发表于 2008-4-29 17:55:46 | 显示全部楼层
原帖由 qazxsw21 于 2008-4-29 15:58 发表
Command1你只定义了一个一位数组,它只能计算得分,缺少保存得分的程序段
Command2你定义数组时使用了“ReDim”,它又清空了你的b(j)
所以是零

你最后的那个循环应该套住整个Command2


你可以定义几个全局变 ...

那个保存得分怎么做啊,我添加C() as interger  在令c(w)= Round(Val(Average), 2)  就出错
第二步那个将最后个循环包含所有后也是b(j)= Round(Val(Average), 2) 出错啊。

麻烦你能将代码写给我吗
伊の星
发表于 2008-4-29 20:07:11 | 显示全部楼层
vc和vb果然差别很大
llj4862
发表于 2008-4-29 20:15:24 | 显示全部楼层
我只看懂,不会编。。。呵呵~~
qazxsw21
发表于 2008-4-30 11:04:06 | 显示全部楼层
5月20以后给你写吧,现在机子上没装VB

      程序应该是,先定义两个全局变量,一个全局二维数组,用来保存得分。这样Command1,Command2都可以调用。
  然后在你的Command1后加一个循环写入全局二维数组中。
  在Command2中用冒泡法对全局二维数组进行排序输出。
Command1每输完一个人点一次。
Command2只能在十个人都输完了才能点。

[ 本帖最后由 qazxsw21 于 2008-4-30 11:16 编辑 ]
SONGBOWEN
发表于 2008-4-30 12:35:47 | 显示全部楼层
我全都给搞定了,对程序的改动较大,源码就不贴出来了,自己下载附件看吧!

[ 本帖最后由 SONGBOWEN 于 2008-4-30 12:39 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
SONGBOWEN
发表于 2008-4-30 12:43:33 | 显示全部楼层
再来几张图吧:)

窗体:


注:设计“填充数据”按钮,是为了调试方便,如果觉得没用,直接删掉就好。

运行效果:


最后来一张全家福:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1经验 +10 收起 理由
etly + 10 感谢解答: )

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2026-10-21 12:33 , Processed in 0.126495 second(s), 5 queries , Redis On.

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表