如图关于计算机VB数组与元素插入的~很急啊.....在线等大神帮忙!非常感谢!

如题所述

界面就上面的了
代码如下:

Dim a() As Long '定义一个数组
Private Sub Command1_Click()
Dim t As Long
ReDim a(9) '重定义数组
For i = 0 To 9
Randomize
a(i) = CLng(Rnd * 100 + 100) '随机生成10个数
Next
For i = 0 To 9 '对这个数组进行排序
For j = i + 1 To 9
If a(i) > a(j) Then
t = a(i)
a(i) = a(j)
a(j) = t
End If
Next
Next
Text1.Text = ""
For i = 0 To 9
If Text1.Text = "" Then Text1.Text = a(i) Else Text1.Text = Text1.Text & " " & a(i) '将这个数组显示在Text1中
Next
End Sub
Private Sub Command2_Click()
ReDim Preserve a(UBound(a) + 1) '数组中增加一个元素
Randomize
a(UBound(a)) = CLng(Rnd * 100 + 100) '数组最后一个元素的值为新增加的随机数
For i = 0 To UBound(a) '对这个数组进行排序
For j = i + 1 To UBound(a)
If a(i) > a(j) Then
t = a(i)
a(i) = a(j)
a(j) = t
End If
Next
Next
Text2.Text = ""
For i = 0 To UBound(a)
If Text2.Text = "" Then Text2.Text = a(i) Else Text2.Text = Text2.Text & " " & a(i) '将这个数组显示在Text2中
Next
End Sub追问

我试试~!

谢谢大神!感激涕零!

追答

呵呵,试试吧,感觉不错就把分给我

追问

嗯!

大神,怎么重新定义全局声明中的数组纬数啊?

你这个不行啊

我在你给的代码的基础上重新修改了一下,现在还有一点小问题就是:全局变量已经写成了Arr(1TO10)在局部模块中怎么修改这个变量让它变成

每输入一个数数组数就多一个的动态数组

追答

定久全局变量的数组
在程序起始定义
Dim Arr() As Long
在Form_Load中重定义
ReDim Arr(10) '给Arr数组分配大小
至于你说代码不行。。。。。
除非我理解错了意思
这段代码已经自己测试过了
按Command1,随机生成10个数,并且进行从小到大的排序,放到Text1中
按Command2 添加一个数,并且重新排序,放到Text2中
明白了。。。。插入的数不是随机生成的是吧?是手动输入的数

ReDim Preserve a(UBound(a) + 1) '数组中增加一个元素
Randomize
a(UBound(a)) = CLng(Rnd * 100 + 100) '数组最后一个元素的值为新增加的随机数
修改成
Dim Str As String
ReDim Preserve a(UBound(a) + 1)
Str = InputBox("请输入一个数字:")
a(UBound(a)) = Clng(Str)

追问

真的....我输入的时候

提示说有语法错误

不过我已经非常感谢你了!

现在老是在按第二个按钮的时候

出现提示

稍等一下

我现在搞不懂的地方就是怎么修改这个代码让多次加入数据的时候使整个数组数据也跟着扩大

大神,如果你能帮我解决这个问题,我愿意把我有的所有的分都给你,真的!今天下午就要交作用了我还是调不好

追答

出错时是什么提示?
ReDim Preserve a(UBound(a) + 1) 就是重定义数组维数,并且保留之前的值

追问

提示【数组纬数已定义】

public
Dim arr(1 to 11) as integer

有这个全局声明

追答

刚刚又测试了一下,没有问题
第一个Dim a() As Long,是在程序第一行,定义的是全局变量
第二次是
ReDim a(9) '重定义数组维数为0-9
第三次是
ReDim Preserve a(UBound(a) + 1) ’重定义数组维数,在现有基础上增加一维

追问

好,那我再试一下!

如果把text改成picture怎么办?

题目要求一定要用picture表示出来

追答

改成Picture的话简单一些
在输入前先清屏Picture

Text1.Text = ""
For i = 0 To 9
If Text1.Text = "" Then Text1.Text = a(i) Else Text1.Text = Text1.Text & " " & a(i)
Next
这一段修改为
Picture1.cls
For i = 0 To 9
Picture1.Print a(i)
Next

第二段一样地修改
不过是将For i = 0 To 9 修改为For i = 0 To UBound(a)

追问

好,我再写一遍。大神,大中午的,太谢谢你了!

可以了!

谢谢!

温馨提示:答案为网友推荐,仅供参考
相似回答