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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB求数组中最大值和它的位置相关的知识,希望对你有一定的参考价值。

随机产生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

定义一个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

参考技术A 在你基础上,我加了几句代码就可以了:
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本回答被提问者采纳
参考技术B 我就简单说了

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

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

二维数组元素个数怎么算啊!!!VB语言的,求!

先说没有option base XX情况:
例如a(3,4),第一维是3,第二维是4,数组就有(3+1)*(4+1)=20个元素,因为这时下界默认是0,等价于a(0 To 3,0 To 4)。
若是有option base XX,例如option base 1,a(3,4)就等价于a(1 To 3,1 To 4),数组就有3*4=12个元素。同理,option base 2,a(3,4)就等价于a(2 To 3,2 To 4),数组就有(3-1)*(4-1)=6个元素。。。
另外,option base 0 等同第一种情况,可以不写。追问

没有option base ,那其他的情况呢,比如a(3,2to2,5),a(1,4to4)这样的???

追答

a(3,2to2,5)有(3+1)*1*(5+1)=24个,a(1,4to4)有(1+1)*1=2个。
没有option base 时,维数如果是单独一个数字,就从0开始算到维数,如a(3,2to2,5)中的第一维数字是3,从0开始算0,1,2,3就有4位;b To c的就从b数到c,数值上就是(c-b+1),a(3,2to2,5)中第二维2 to 2就是2-2+1=1,共有1 位,依次算出各维的位数,做乘积就是数组的元素个数了。多维数组也是如此。

追问

不对啊,这是题目:
如下数组声明语句,则数组a包含元素的个数有______。
     Dim a(3, 2 to 2,5)
(A)120   (B)75
(C)60    (D)13
谢谢谢谢啦~~~

追答

如果答案是(A)的话,我怀疑是不是-2 to 2

追问

哦哦~~·应该是这样~~~

参考技术A 数组 arr(x to y,n to m)
每一维的个数公式:上界 - 下界 +1
第一维:ubound(arr,1) - lbound(arr,1) +1
第二维:ubound(arr,2) - lbound(arr,2) +1
总个数:
n = (ubound(arr,1) - lbound(arr,1) +1) * (ubound(arr,2) - lbound(arr,2) +1)
将数组的名字替换公式中的 arr,就可以计算出个数 n ,与option base 什么的都没关系
-------
数组 Dim a(3, 2 to 2,5) 是3维的,不是2维
n = (3-0+1)*(2-2+1)*(5-0+1) = 24
给出的选项有问题啊,或者是你的题目写错了?
如果定义了
option base 1

n = (3-1+1)*(2-2+1)*(5-1+1) = 15
选项中也没有啊追问

你确定吗,这是我们计算机教学平台题库里面的原题啊,真没错~~~
先谢谢你了啊~~

追答

确定,非常确定

参考技术B /*用C语言求二维数组中的这样的一个元素位置:
在行上最小,在列上也最小。如果没有这样的数则输出相应信息。
*/
#define ROW 3 //数组行数
#define COL 3 //数组列数
#include <iostream>
using namespace std;
void search(int array[ROW][COL],int m,int n) //m为数组行数,n为数组列数

int temp=array[0][0];
int posx,posy;
int i,j,k;
for (i=0;i<m;i++)
for (j=0;j<n;j++)

if (array[i][j]<temp) //查找该行最小的数

temp=array[i][j];
posx=i,posy=j;

if (j==n-1) //比较在该列是不是最小的数

for (k=0;k<m;k++)

if(array[k][posy]<temp)
temp=0;

if (temp!=0)

cout<<"Row="<<posx+1<<" Col="<<posy+1<<" Vauel="<<temp<<endl;

if (i<m-1) //查找下一行

temp=array[i+1][0];
posx=i+1,posy=0;




int main()

int a[2][3]=,;

//调用查找函数,第一个参数是数组名,
//第二个参数是数组行数,第三个参数是数组列数
search(a,2,3);

return 0;

参考技术C Lbound(数组名[,维数])-返回数组指定维数的下界

Ubound(数组名[,维数])-返回数组指定维数的上界

省略维数,默认为第1维。

Dim a(-3 To 2, 5)

Print LBound(a, 2), UBound(a, 2) 【0 5】

Print LBound(a), UBound(a) 【-3 2】

该函数返回(下界与上界)在定义数组时确定,与数组的元素值无关。

以上是关于VB求数组中最大值和它的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何用vb解答随机产生N个二位正整数存放在一维数组中,求数组的最大值、平均值。

c++返回二维数组的最大元素和它所在的行、列号?

假设法求最大值和数组的优点

VB编程:随机产生10个100以内的数,并存放在A数组中,求A数组中的最大数及其所对应的下标。

怎么用for循环计算数组最大值?代码怎么写

C语言试题三十五之找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。