Warning: fopen(/www/wwwroot/www.wendadaohang.com/data/md5_content_title/96/96d4a1fe20b51df6cea724dcb13870ef.txt): failed to open stream: No space left on device in /www/wwwroot/www.wendadaohang.com/inc/function.php on line 2468

Warning: flock() expects parameter 1 to be resource, bool given in /www/wwwroot/www.wendadaohang.com/inc/function.php on line 2469

Warning: fclose() expects parameter 1 to be resource, bool given in /www/wwwroot/www.wendadaohang.com/inc/function.php on line 2475
vb一个含有n个元素的一维数组,交换数组中元素的位置,要求第1个元素与最后一个交换第2个与倒数第2交换 - 00问答网

vb一个含有n个元素的一维数组,交换数组中元素的位置,要求第1个元素与最后一个交换第2个与倒数第2交换

一次类推。
提示:交换数组中各个元素,关键在于找出下标的规律。其规律为a(i)与a(n+1-i)交换!
这些过程我能理解,其实就是数组的问题
输入个N出来的是按照顺序排列的数还是随机产生一组数,n只是代表了多少个数
这个题真水!其实我想的是这个样子 如图
效果应该是这个样子的~

由于数组下标默认是0开始的。n个数组的下标是从0到n-1
if n mod=0 then '即数组个数为偶数个
for i=0 to n/2-1
temp=a(i)
a(i)=a(n-i-1)
a(n-i-1)=temp
next i
else '数组为奇数个,那么中间一个,不需要交换
for i=0 to (n-1)/2-1
temp=a(i)
a(i)=a(n-i-1)
a(n-i-1)=temp
next i
end if

如果下标从1开始,那么交换的就是a(i)与a(n+1-i),代码变成:
if n mod=0 then '即数组个数为偶数个
for i=1 to n/2
temp=a(i)
a(i)=a(n+1-i)
a(n+1-i)=temp
next i
else '数组为奇数个,那么中间一个,不需要交换
for i=1 to (n-1)/2
temp=a(i)
a(i)=a(n+1-i)
a(n+1-i)=temp
next i
end if
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-24
由于VB的数组下标可以不为0,所以a(i)与a(n+1-i)的规率可能被破坏,换句话说,在VB的数组中,这种规率是有可能不成立的.比如定义数组a(3 to 5),那么n=3(3,4,5共3个元素), 当i=3时,n+1-i=1,实际上数组中没有a(1)这个元素.
所以下例中,你只需要修改数组定义即可,代码部分不用做任何修改,下面的代码可以直接调试.

Private Sub Form_Load()
Me.Show
Me.AutoRedraw = True

Dim tArr(6 To 20) As String, tStr As String, i As Integer, l As Integer, m As Integer
For i = LBound(tArr) To UBound(tArr)
tArr(i) = i
Me.Print "tArr(" & i & ")=""" & tArr(i) & """"
Next
l = LBound(tArr)
m = UBound(tArr)
For i = 0 To (UBound(tArr) - LBound(tArr) - 1) \ 2 '用整除,如果最后剩一个元素也就无需交换了.
tStr = tArr(l + i)
tArr(l + i) = tArr(m - i)
tArr(m - i) = tStr
Next
For i = LBound(tArr) To UBound(tArr)
Me.Print "tArr(" & i & ")=""" & tArr(i) & """"
Next
End Sub
第2个回答  2011-11-24
另设置一个参数
dim Q as integer (看你数组定义的是什么了)
dim i as integer
for i = 0 to n/2+1
Q = a(i)
a(i) = a(n+1-i)
a(n+1-i)= Q
next i
第3个回答  2011-11-24
下面的代码在定义Dim a(4 to 10) 这种情况下也可以使用
Dim sTemp
Dim x1 As Integer, x2 As Integer
x1 = LBound(a)
x2 = UBound(a)
For i = 0 To (x2 - x1) \ 2
sTemp = a(x1 + i)
a(x1 + i) = a(x2 - i)
a(x2 - i) = sTemp
Next