一个小问题,直接看代码

[复制链接]
查看11 | 回复1 | 2011-5-11 17:26:47 | 显示全部楼层 |阅读模式
Dim i As Integer

Dim a(9) As Integer

Dim x, max, mix, sum As Integer

Dim Rnd As New Random

For i = 0 To 9 Step 1

a(i) = CInt(Rnd.Next(1, 100))

Next

Dim k As Integer

Dim shu As String = ""

For k = 0 To 9 Step 1

shu = a(k).ToString + ";" + shu

Next

Response.Write("" & "这十个数是:" & shu & "")

For x = 0 To 8 Step 1

If a(x) > a(x + 1) Then

max = a(x)

a(x) = a(x + 1)

a(x + 1) = max

mix = a(x)
Else

max = a(x + 1)
mix = a(x)

End If

sum = sum + a(x)

Next

Dim avg As Double

avg = sum / 10

Response.Write("最大值是" & max & "" & "最小值是" & mix & "" & "平均值是" & avg & "")
显示最大值是没问题的,可是最小值却有问题,是什么原因??

回复

使用道具 举报

千问 | 2011-5-11 17:26:47 | 显示全部楼层
问题在于下列比较当中: If a(x) > a(x + 1) Then
‘相邻两数比较,大数放在max中,然后将大数后移
max = a(x)
a(x) = a(x + 1)
a(x + 1) = max
mix = a(x)
’mix中存放的是相邻两个数中的较小者,这将导致不管原来mix中存放的数多小,都会被a(x)中的数替换。
Else
max = a(x + 1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行