VB求数组中最大值和它的位置

随机产生10个不同的两位整数存到一维数组,求最大值,还有它的位置我写了个能求最大值,但不知道怎么求它的原来位置请补充一下。PrivateSubCommand1_Click... 随机产生10个不同的两位整数存到一维数组,求最大值,还有它的位置
我写了个能求最大值,但不知道怎么求它的原来位置
请补充一下。
Private Sub Command1_Click()
Dim a(1 To 10) As Integer, work As Boolean, i As Integer, j As Integer, x As Integer
Randomize
For i = 1 To 10
a(i) = Int((90 * Rnd) + 10)
Print a(i)
Next i
Print
For i = 10 To 2 Step -1
work = True
For j = 1 To i - 1
If a(j) > a(j + 1) Then
x = a(j)
a(j) = a(j + 1)
a(j + 1) = x
work = False
End If
Next j
If work Then Exit For
Next i
Text1.Text = a(10)
End Sub
展开
 我来答
四舍五不入6
高粉答主

2019-10-06 · 还没有填写任何签名哦
四舍五不入6
采纳数:27 获赞数:71370

向TA提问 私信TA
展开全部

定义一个q1,初始值为a(0),每次判断a(j) > a(j + 1) 成立时,q1=j

此时q1就为所求位置,但是初始位置是0,所以要准确时q1=q1+1

如下所示:

Private Sub Command1_Click()

Cls

Dim a(1 To 10) As Integer, b(1 To 10) As Integer, work As Boolean, i As Integer, j As Integer,

x As Integer

Randomize

For i = 1 To 10

a(i) = Int((90 * Rnd) + 10)

Print a(i)

b(i) = a(i)

Next i

Print

For i = 10 To 2 Step -1

work = True

For j = 1 To i - 1

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

x = a(j)

a(j) = a(j + 1)

a(j + 1) = x

work = False

End If

Next j

If work Then Exit For

Next i

Text1.Text = a(10)

For k = 1 To UBound(a)

If b(k) = a(10) Then

MsgBox "原来位置:" & k, 64, "提示!"

Exit For

End If

Next k

扩展资料:

有两种方法定义数组: 

1、知道数组的元素个数,那么直接定义。

dim a(9) as integer 

2、暂时不知道元素个数,或者该数组应用在多个地方,那么如下定义。

dim a() as integer

在使用的时候,再重定义一下就可以了。

ReDim a(9)

数组的类型可以和变量的类型一样的。

dim a(0 to 9) as string '表示定义了一个包含10个元素的字符串型的数组,数组名为:a

参考资料来源:百度百科-Visual Basic

巧拙贤愚
推荐于2016-08-07 · TA获得超过1346个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:647万
展开全部
在你基础上,我加了几句代码就可以了:
Private Sub Command1_Click()
Cls
Dim a(1 To 10) As Integer, b(1 To 10) As Integer, work As Boolean, i As Integer, j As Integer, x As Integer
Randomize
For i = 1 To 10
a(i) = Int((90 * Rnd) + 10)
Print a(i)
b(i) = a(i)
Next i
Print

For i = 10 To 2 Step -1
work = True
For j = 1 To i - 1
If a(j) > a(j + 1) Then
x = a(j)
a(j) = a(j + 1)
a(j + 1) = x
work = False
End If
Next j
If work Then Exit For
Next i
Text1.Text = a(10)

For k = 1 To UBound(a)
If b(k) = a(10) Then
MsgBox "原来位置:" & k, 64, "提示!"
Exit For
End If
Next k
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wynness
2008-11-23 · TA获得超过1676个赞
知道小有建树答主
回答量:2245
采纳率:50%
帮助的人:1219万
展开全部
我就简单说了

定义一个q1,初始值为a(0),每次判断a(j) > a(j + 1) 成立时,q1=j

此时q1就为你的位置,但是初始位置是0,所以要准确时q1=q1+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式