首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

恳请前辈学长们指点VB有关问题

2012-02-28 
恳请前辈学长们指点VB问题小弟上次发帖至今,VB已有成长,现在作业又碰到个问题,请学长们指点程序哪里有错,

恳请前辈学长们指点VB问题
小弟上次发帖至今,VB已有成长,现在作业又碰到个问题,请学长们指点程序哪里有错,题目如下:

随机产生20个学生的计算机课程的成绩,并显示。统计各分数段人数,即0~59,60~69,70~79,80~89,90~100,并显示结果。
小弟写的程序如下:

Private   Sub   Command1_Click()
Dim   a%(20),   s%(5   To   9),   i%,   j%,   k%
        Randomize
        For   i   =   1   To   20
              a(i)   =   Int(Rnd   *   100   +   1)
              k   =   k   +   1
              Print   a(i);
              If   k   Mod   10   =   0   Then   Print   j   =   a(i)   \   10
        Select   Case   j
                Case   0   To   5
                      s(5)   =   s(5)   +   1
                Case   6
                      s(6)   =   s(6)   +   1
              Case   7
                      s(7)   =   s(7)   +   1
              Case   8
                      s(8)   =   s(8)   +   1
            Case   9
                      s(9)   =   s(9)   +   1
      End   Select
        Next   i
          Print   "不及格: ";   s(5);   "及格: ";   s(6)
          Print   "中: ";   s(7);   "良: ";   s(8);   "优 ";   s(9)
End   Sub

运行后结果为20个成绩全部不及格。。。。
也就是不及格20,及格0,中0,良0,优0
请前辈们指点下,感谢了!

[解决办法]
问题出在
If k Mod 10 = 0 Then Print j = a(i) \ 10
这里

不明白你这样有什么用?
if 语句只有在K=10和20的时候管用
则j只有在10次循环以后才有效
另外:
Print j = a(i) \ 10
有问题,不能print的时候赋值,系统会当成比较运算,结果是boolean值
应该j = a(i) \ 10
print j


其实,没必要打印j,就给j赋值就可以了
然后去select case j
如果为了换行,也没必要打印j吧?

[解决办法]
什么s(5),s(6)的,什么意思。
dim score(19) as integer
dim i ,k ,ok,well,better,best as integer

for i=0 to 19
randomize
score(i)=rnd*100+1
next

for i=0 to 19
k=score(i)
select case k
case 0 to 59
ok=ok+1
case 60 to 70
well=well+1
case 70 to 80
better=better+1
case else
best=best+1
end select
next
debug.print "及格: " & ok & "--中等: " & well & "--良好: " & better & "--优秀: " & best


热点排行