| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1172 人关注过本帖
标题:求助修改程序。我已经很努力了,可还是不会。
只看楼主 加入收藏
不是小孩
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2010-6-10
结帖率:66.67%
收藏
 问题点数:0 回复次数:4 
求助修改程序。我已经很努力了,可还是不会。
编一VB应用程序。要求如下:
⑴ 随机产生20个学生的VB程序设计课程的成绩,存入一维数组中,并显示结果;
⑵ 求这20个学生的最高分、最低分和平均分,并显示结果;
⑶ 统计各分数段人数,即0~59、60~69、70~79、80~89、90~100,并显示结果;
⑷ 编写可对一组数据进行排序的自定义函数或过程。调用该自定义函数或过程将分数按由高到低的次序排列并输出。
⑸ 窗体界面自行设计。
Private Sub Command1_Click()
    Dim a(1 To 20) As Integer
    For i = 1 To 20
    a(i) = Int(Rnd * 101)
    Next i
   
    Dim s(5 To 9)
      For i = 1 To 20
        k = a(i) \ 10
        Select Case k
          Case 0 To 5
            s(5) = s(5) + 1
          Case 9 To 10
            s(9) = s(9) + 1
          Case 6 To 8
            s(k) = s(k) + 1
          End Select
    Next i
      For i = 5 To 9
        If s(i) <> 0 Then Picture3.Print "s("; i; ")的人数有"; Format(s(i), "0"); "个"
      Next i
      
   
End Sub

Private Sub Command2_Click()
    Dim a(1 To 20) As Integer, i%
    For i = 1 To 20
    a(i) = Int(Rnd * 101)
    Next i
    Call PaiXu(a())
End Sub

Private Sub Form_Click()
    Dim a(1 To 20) As Integer, i%, maxa%, mina%, avera!
    For i = 1 To 20
    a(i) = Int(Rnd * 101)
    Next i
    mina = a(1)
    maxa = a(1)
    avera = a(1)
    For i = 2 To 20
      If a(i) > maxa Then maxa = a(i)
      If a(i) < mina Then mina = a(i)
      avera = avera + a(i)
    Next i
    For i = 1 To 20
      Picture1.Print a(i);
      If i Mod 10 = 0 Then Picture1.Print
    Next i
    Picture2.Print "最高分"; maxa, "最低分"; mina, "平均分"; avera / 20
End Sub

Sub PaiXu(ByRef a() As Integer)
    Dim iMax%, n%, i%, j%, t%
    n = UBound(a)
    For i = LBound(a) To n
      iMax = i
      For j = i + 1 To n
        If a(j) > a(iMax) Then iMax = j
        Next j
        t = a(i)
        a(i) = a(iMax)
        a(iMax) = t
      Next i
      For i = LBound(a) To UBound(a)
        Picture4.Print a(i);
        If i Mod 5 = 0 Then Picture4.Print
        Next
     
End Sub
每一小点要求都会一些,连起来就错了,怎么改?求助。
搜索更多相关主题的帖子: 程序设计 设计 应用程序 课程 
2010-06-11 08:55
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 

程序代码:
Option Explicit

Dim a(1 To 20) As Integer           '定义为窗体的全局变量,在本窗体范围内可见
'如果像你前面那种,二个按钮操作的话,就必须定义为窗体的全局变量或 整个程序的全局变量
'这里,只使用一个按钮,就无所谓了
'一般全局重复使用的数据内容,建议定义为全局变量.根据程序来决定是 全局变量

Private Sub Command1_Click()
   
    Picture1.Cls         '清屏
   
'    Dim a(1 To 20) As Integer      '移到外面,定义为窗体的全局变量
    Dim i As Long, k As Long
    Randomize                       '初始化随机数发生器
    For i = 1 To 20                 '产生随机数
        a(i) = Int(Rnd * 101)
    Next i
   
'    Dim s(5 To 9)                  '定义为5个数据,可以不用跳
    Dim s(1 To 5) As Integer        '对应 0~59、60~69、70~79、80~89、90~100
    Dim maxa%, mina%, avera!
   
    '------------输出排序前的结果-----------------
    Picture1.Print "⑴ 随机产生20个学生的VB程序设计课程的成绩,存入一维数组中,并显示结果;"
    For i = 1 To 20
        Picture1.Print a(i),              '输出每个分数
        If i Mod 5 = 0 Then Picture1.Print    '每5个换行
    Next i
   
    '-----------找出最大值,最小值,求总分,范围分布---------------
    mina = a(1)
    maxa = a(1)
    avera = a(1)
    For i = 2 To 20
        If a(i) > maxa Then maxa = a(i)         '最大
        If a(i) < mina Then mina = a(i)         '最小
        avera! = avera! + a(i)       '求和
    Next i
   
    '-----------输出统计结果--------------
    Picture1.Print
    Picture1.Print "⑵ 求这20个学生的最高分、最低分和平均分,并显示结果;"
    Picture1.Print "最高分: " & a(1), "最低分: " & a(20),         '排序后,最高分排在最前面,最低分排在最后面.  原来的找最高分,最低分代码没错,只是排序后,就用不上了.
    Picture1.Print "平均分: " & avera / 20
   
    '------------分布情况统计----------------
    For i = 1 To 20
        If a(i) < 60 Then               '0-59特殊判断,公式不能用于这个计算
            k = 1
        ElseIf a(i) = 100 Then          '100 特殊判断 , 代入公式会导致下标越界
            k = 5
        Else
            k = Int(a(i) / 10) - 4     '取10位,然后减掉 4 ,得到 60分为2 ,70分为 3  90分为 5 ,100分前面单独设为 5 ,计算结果是 6
        End If
        s(k) = s(k) + 1             '计数
    Next i
   
    '------------输出分布结果-------------
    Picture1.Print
    Picture1.Print "⑶ 统计各分数段人数,即0~59、60~69、70~79、80~89、90~100,并显示结果;"
    For i = 1 To 5
        If i = 1 Then
            Picture1.Print "0~59分的为: " & s(1) & ""             '特殊处理 0-59分
        ElseIf i = 5 Then
            Picture1.Print "90~100分的为: " & s(5) & ""           '再特殊处理 90-100分
        Else
            Picture1.Print (i + 4) * 10 & "~" & (i + 5) * 10 - 1 & "分的为: " & s(i) & ""     '其它的通用处理
        End If
    Next i
       
    '--------------调用排序-----------------
    Call PaiXu(a())                 '排序
   
    '--------------一个循环处理计分,分布统计-------------------
    Picture1.Print
    Picture1.Print "⑷ 编写可对一组数据进行排序的自定义函数或过程。调用该自定义函数或过程将分数按由高到低的次序排列并输出。"
    For i = 1 To 20
        Picture1.Print a(i),              '输出每个分数
        If i Mod 5 = 0 Then Picture1.Print    '每5个换行
    Next i

End Sub

Sub PaiXu(ByRef a() As Integer)
    Dim iMax%, n%, i%, j%, t%
    n = UBound(a)
    For i = LBound(a) To n
      iMax = i
      For j = i + 1 To n
        If a(j) > a(iMax) Then iMax = j
      Next j
      t = a(i)
      a(i) = a(iMax)
      a(iMax) = t
    Next i
   
      '输出改在 调用的地方,所以排序中只需要处理排序,不需要再输出, 这个函数就更加可以通用
    'For i = LBound(a) To UBound(a)
        'Picture4.Print a(i);
        'If i Mod 5 = 0 Then Picture4.Print
    'Next
End Sub


授人于鱼,不如授人于渔
早已停用QQ了
2010-06-11 10:36
不是小孩
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2010-6-10
收藏
得分:0 
谢谢你!
我觉得这条:Picture1.Print "最高分: " & a(1), "最低分: " & a(20),  
应该改成  Picture1.Print "最高分: " & maxa, "最低分: " & mina,      
如果不改的话,显示的是第一个随机产生的数和最后一个随机产生的数。
而且下面的这句话也就没有意义了。   If a(i) > maxa Then maxa = a(i)         '最大   If a(i) < mina Then mina = a(i)         '最小
总之,太感谢你了!我会认真学习学习的。
2010-06-11 11:25
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
因为这个程序改来改去,都改晕头了.

前面,这段是放在排序后再显示的, 发的时候,再看了一下你的题目,发现在先显示这节,就提前了,
忘了 改变量名了.


授人于鱼,不如授人于渔
早已停用QQ了
2010-06-11 19:48
ytsm0526
Rank: 2
来 自:西安市
等 级:论坛游民
威 望:2
帖 子:203
专家分:60
注 册:2007-10-28
收藏
得分:0 
学习学习

作舍道边,三年不成。
多抽出一分钟时间学习,让你的生命更加精彩!,
2010-06-12 18:55
快速回复:求助修改程序。我已经很努力了,可还是不会。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037288 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved