VB 数组 满意追加100分

添加2个按钮~按钮一:~随机从1-100中选取的10个数 要求不重复的 将其赋值给一个数组 然后打印出来~
按钮二 单击后显示上面这个数组的元素倒置
如 1 2 3 4 5 6 7 8 9 10 单击后变 10 9 8 7 6 5 4 3 2 1
1楼的你能不能让改下代码 从X数 内选Y个随机数 用INPUTBOX输入 最好能优化代码 多点备注
2楼的代码错误。改改 还有 排序怎么配合px过程可对数组进行升序或降序排列??

3楼 你现在改好了~~能不能再为难一下~ 就是在同一个文本框内 输出这2次结果 好做对比啊~行的话 分全给你了~

4楼。。我要VB 你来PHP干吗。。郁闷~我搞软件 你搞网页。。

哇!追加100分啊,我就是熬夜也给你写出来啦!

花了三十分钟,写好了,我尽量减少了代码,而且完全达到你的要求,还添加了说明,不知道满意吗?有啥不对的给我发消息. vb6+sp2测试
添加两个command 一个label

Private A(10) As Integer

Private Sub Command1_Click()
Dim i As Integer
Text1.Text = ""
Do '开始循环添加变量数组
i: '设置标签,让重复跳到这里换一个随机数
A(i) = Int(Rnd * 100) '开始赋予变量数组随机数
For j = 0 To i - 1 '循环检查是否重复
If A(j) = A(i) Then GoTo i: '如果重复就跳到设置标签,换一个随机数
Next j '退出循环
Text1.Text = Text1.Text & " " & A(i) '显示到text1.text,并且在中间添加个空格
i = i + 1 '让数组循环加1
If i = 10 Then Exit Do '如果有10个了就退出
Loop
End Sub

Private Sub Command2_Click()
Dim B As String, i As Integer
For i = 0 To 9 '循环从0到9
B = A(i) & " " & B '循环让A=第i个字符加A
Next i
Label1.Caption = Label1.Caption & Chr(13) & B
End Sub
代码好了,把text控件换成label(因为好像text不支持换行符chr(10),所以用label,下面我给你写了个用Print输出的),这次没问题了吧!还有啥需要?

这个使用print 输出的 (我不喜欢用ptint输出,所以我一般都没用这个,但是也能写),两个command就行了
Private A(10) As Integer

Private Sub Command1_Click()
Dim i As Integer, B As String
Do '开始循环添加变量数组
i: '设置标签,让重复跳到这里换一个随机数
A(i) = Int(Rnd * 100) '开始赋予变量数组随机数
For j = 0 To i - 1 '循环检查是否重复
If A(j) = A(i) Then GoTo i: '如果重复就跳到设置标签,换一个随机数
Next j '退出循环
B = B & " " & A(i) '显示到label1.caption,并且在中间添加个空格
i = i + 1 '让数组循环加1
If i = 10 Then Exit Do '如果有10个了就退出
Loop
Print B '输出结果
End Sub

Private Sub Command2_Click()
Dim B As String, i As Integer
For i = 0 To 9 '循环从0到9
B = A(i) & " " & B '循环让A=第i个字符加A
Next i
Print " " & B
End Sub

两种代码,随你选哪个都可以
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-10
Dim m(1 To 10) As Integer
Private Sub Command1_Click() '产生数组
Dim A As Integer
For i = 1 To 10
Do
ats = 0
A = Rnd * 99 + 1
For J = 1 To i
If A = m(J) Then
ats = 1
End If
Next J
Loop While ats = 1
m(i) = A
Me.Print m(i);
Next i
Me.Print
End Sub

Private Sub Command2_Click() '倒置数组
For i = 1 To 5
swap m(i), m(11 - i)
Next i
For i = 1 To 10
Print m(i);
Next i
Print
End Sub

Private Function swap(ByRef A As Variant, ByRef B As Variant)
Dim C As Variant
C = A
A = B
B = C
End Function
第2个回答  2008-11-11
php 可以这么搞

$tmp=array();

while(count($tmp)<10)
{
$tmp[]=mt_rand(1,10); //生成10个随即数
$tmp=array_unique($tmp); //去重复
}

$s=join(',',$tmp);

$tmp=split(',',$s);//整理下标

for($i=9;$i>=0;$i--)
{
$new_arr[]=$tmp[$i];//重新排序
}

echo join(',',$tmp);

echo "间隔一下";

echo join(',',$new_arr);

//去重复
$s=mt_rand(1,10);
$arr[]=$s;

for($i=1;$i<10;$i++)
{
$temp=produceRand();
$result=checkNum($arr,$temp);

if($result[0]==1)
{
$arr[$i]=$result[1];
$s=$result[1];
}
else
{
if($i>1)
{
$i-=1;
}
}
}

print_r($arr);

function checkNum($arr,$t)
{
if(in_array($t,$arr))
{
return produceRand();
}
else
{
return array(1,$t);
}
}

function produceRand()
{
return mt_rand(1,10);
}
第3个回答  2008-11-11
Dim s(1 to 10) as integer
Private Sub Command1_Click()
Randomize() '在使用Rnd函数之前,如不使用此函数,那每次产生相同顺序随机数
for i=1 to 10
k=fix(Rnd*100)+1 'rnd无限接近1,fix去掉小数所以最大只能是99!
for t=1 to i

if k = s(t) then
k=fix(Rnd*100)+1
t=1
end if
next
s(i)=k
Me.print s(i)
next
me.print

Private Sub Command2_Click() '颠倒数组,配合px过程可对数组进行升序或降序排列
For i = 1 To 5
jh(s(i),s(11 - i))
Next i
End Sub

sub jh(a as integer,b as integer)
dim c as integer
c=b : b=a : a=c
end sub

sub px(w(1 to 10) as integer) '将数组按顺序排列
for i=1 to 9
for j=i+1 to 10
if w(i)<w(j) then jh(w(i),w(j))
next
next
end sub
相似回答