level 5
求助,找出我错哪了
问题是:
用 Dim 声明数组 a 并用 Array 赋值(数组元素的个数及每个元素的值自己设定),从键盘上输入一个数据,在数组中进行查找:如果数组中有,则删除数组中的这个元素; 如果没有则提示“还没有这个数。你想让它成为第几个数?”,用户输入该数需要插入的位置,并将该数插入到用户指定位置。
2020年05月16日 16点05分
1
level 5
Private Sub Command1_Click()
Dim a(), n%, s%, u%, i%, j%
a = Array(33, 56, 12, 26, 78, 2, 47)
n = Val(InputBox("输入要查找的一个数"))
u = UBound(a)
For i = 1 To u
If a(i) = n Then
If i = n Then
u = u - 1
i = i - 1
ReDim Preserve a(u)
Exit For
End If
u = u - 1
For j = i To u
a(j) = a(j + 1)
Next
Exit For
End If
Next i
If i > u Then
s = Val(InputBox("还没有这个数,你想让它成为第几个数?"))
u = u + 1
ReDim Preserve a(u)
For i = u - 1 To s Step -1
a(i + 1) = a(i)
Next
a(s) = n
End If
For i = 1 To u
Print a(i);
Next
End Sub
2020年05月16日 16点05分
2
这个代码中If i = n Then是这样吗?我看不懂。。
2020年05月17日 01点05分
在楼下,比这个简洁一点,也许会更好理解
2020年05月17日 06点05分
level 5
上面是我的代码,可以运行,但是出在一个问题就是,无论我怎么出一个数,我第一个数组中的数总会没了
2020年05月16日 16点05分
3
level 5
Option Base 1
Private Sub Command1_Click()
Dim a(), n%, s%, u%, i%, j%
a = Array(33, 56, 12, 26, 78, 2, 47)
n = Val(InputBox("输入要查找的一个数"))
u = UBound(a)
For i = 1 To u
If a(i) = n Then
u = u - 1
ReDim Preserve a(u)
For j = i To u - 1
a(j) = a(j + 1)
Next
Exit For
End If
Next i
If i > u Then
s = Val(InputBox("还没有这个数,你想让它成为第几个数?"))
u = u + 1
ReDim Preserve a(u)
For i = u - 1 To s Step -1
a(i + 1) = a(i)
Next
a(s) = n
End If
For i = 1 To u
Print a(i);
Next
End Sub
2020年05月17日 06点05分
8
这个可以了,谢谢吧友
2020年05月17日 06点05分