vb编程提问-将10个不同的整数存入一维数组,找出最小数,并将最小数与第一个数交换。

Private Sub Form_Click()
Dim a(9) As Integer
Dim i, t, k, min As Integer

For i = 0 To 9
Randomize
a(i) = Int(Rnd * 101)
Print a(i);
Next

min = a(0)
For i = 0 To 9
If a(i) < min Then
min = a(i)
k = i
End If
Next
Print "最小值为:"; a(k)

t = a(0)
a(0) = a(k)
a(k) = t

Print "对调后为:";
For i = 0 To 9
Print a(i);
Next i

End Sub

这段程序中为什么要有 k = i 的那步转化才对?谢谢!

k是为了后面交换所用。如果没有后面的最大数与第一个数交换,可以不用k,,上面可以直接输出Print "最小值为:"; min。k是为了找到这个数组中哪个值是最大数的下标。然后才能与之第一个数对调追问

那如果没有这一步的话
其中有个地方改成
t=min
min=a(0)
a(0)=t
这样的话怎么是不对的呢?

追答

这个是三个参数的问题了。
假如一个数组 5,4,3,2,1
其中a(1)=5,a(2)=4,a(3)=3,a(4)=2,a(5)=1.这个数组里面的最小数是a(5)是吧,这里最小值是min=1,
在设个变量t, 你把min的值给了t 这里t等于1是吧。t=min,min=a(1),a(0)=t
你在用这个a(1)去和min交换。这时,min的值为5了,a(1)的值为1,在这个过程中,根本没有a(5)的什么事情,它的值是不会变的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-11
k储存的是已判断的最小值的下标位置,循环一遍过后k中就是整个数组中最小值的下标。

vb编程提问-将10个不同的整数存入一维数组,找出最小数,并将最小数...
k是为了后面交换所用。如果没有后面的最大数与第一个数交换,可以不用k,,上面可以直接输出Print "最小值为:"; min。k是为了找到这个数组中哪个值是最大数的下标。然后才能与之第一个数对调

请教,一维数组元素的交换赋值。VB程序设计,输入十个整数,要求第一个与...
j, x As IntegerDim a As IntegerPrint "数组原始值为:"For i = 1 To 10arr(i) = iPrint arr(i);Next i '将1-10赋值给数组For j = 1 To 4a = arr(j)arr(j) = arr(11 - j)arr(11 - j) = a '引入变量a 将数组前后交换Next jPrintPrint "交换...

...10个两位整数的一维数组,求这10个数的最大值,最小值以及平均值。_百...
运行结果:生成的数组为73 58 62 36 37 79 11 78 83 73 排序后的数组为83 79 78 73 73 62 58 37 36 11 该数组元素各个元素的和是 590 最大元素是 83 最小元素是 11

vb编程输入10个整数存入一维数组,再按逆序重新存放后再输出?
Private Sub Command1_Click()Dim a(10) As Integer Print "初始的数:"For i = 1 To 10 a(i) = InputBox("请输入第" & i & "个数:")Print a(i);Next i Print For i = 1 To 5 t = a(i)a(i) = a(11 - i)a(11 - i) = t Next i Print "逆序重新存放后的数:...

Vb编程10个评委评分 除去最高.最低分,求他们的平均分
定义一维数组,A(10),10个评分中找出最小的数赋值给 A(1),……同理对其余的最小的数赋值给 A(2)……一直最后一个数赋值给 A(10)。(其实就是排序)然后,累加A(2)到A(9),除以9就得平均分。

...的随机整数存入一维数组。求出最大值并和数组中的首个
Private Sub Command1_Click()  Randomize  Dim a(9) As Integer, Max As Integer  Dim k As Integer, i As Integer  Dim t As Integer  Max = 0  For i = 0 To 9    a(i) = Int(Rnd * 51)    Print a(i);&#...

...输入10个整数存入数组,找出其中最大和最小值,并输出。 麻烦帮忙编 ...
要是很大的数,不能这么做,只能用字符串解决char a[10][10000];char max[10000],min[10000];int i,l[10],lmax,lmin;for(i=0;i<10;i++) gets(a[i]);lmax=strlen(a[0]);lmin=strlen(a[0]);strcpy(max,a[0]);strcpy(min,a[0]);for(i=1;i<10;i++){ l[i]=strlen(a[i]) if(...

vb编程例题
用随机函数产生10个50以内(包括50)的随机整数存入一维数组,从键盘上输入一个数,在数组中查找这样的数,最后返回查找结果:在数组的第几个元素中找到,或是未找到这样的数。Private Sub Command1_Click() Dim a(10) As Integer, x As Integer Randomize For i = 1 To 10 a(i) = Int...

VB将15个整数放到一维数组中,输出该数组中的最大值它的下标。然后将它和...
Private Sub Command1_Click() Dim a(14) As Integer maxi = 0 For i = 0 To 14 a(i) = Int(Rnd * 100) If a(maxi) < a(i) Then maxi = i Print a(i); Next i Print t = a(0): a(0) = a(maxi): a(maxi) = t Print "对换以后:" For i ...

从键盘上输入10个数,并放入一个一维数组中,然后将其前五个元素雨后五...
int i,n = 10,a[10],t;for(i = 0;i < n;i++) { printf("请输入第%d\/%d个数 : ",i + 1,n);scanf("%d",&a[i]);} for(i = 0;i < n\/2;i++) { t = a[i];a[i] = a[n - i - 1];a[n - i - 1] = t;} for(i = 0;i < n;i++) printf("%d ...

相似回答
大家正在搜