在VB中任意輸入4個數,要求對這4個數進行排列
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
僅供參考,盡管不是VB6:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int m;//記錄字串長度
int n;//記錄字串中的字符種類數
char map[256];//記錄是哪幾種字符
int count[256];//記錄每種字符有多少個
int stack[1000];//遞回用的堆疊,并記錄當前生成的排列
void Make_Map(char *str) {//統計字串的相關資訊
int s[256];
int i;
memset(s,0,sizeof(s));
memset(count,0,sizeof(count));
m=strlen(str);
while(*str) {
s[*str]++;
str++;
}
n=0;
for (i=0;i<256;i++)
if (s[i]) {
map[n]=i;
count[n]=s[i];
n++;
}
}
void Find(int depth) {//遞回式回溯法生成全排列
if (depth==m) {
int i;
for (i=0;i<depth;i++) putchar(map[stack[i]]);
putchar('\n');
} else {
int i;
for (i=0;i<n;i++)
if (count[i]) {
stack[depth]=i;
count[i]--;
Find(depth+1);
count[i]++;
}
}
}
void main(int argc,char**argv) {
if (argc<2) {
printf("%s 要產生全排列的字串\n",argv[0]);
return;
}
Make_Map(argv[1]);
Find(0);
}
uj5u.com熱心網友回復:
趙4,你丫有病啊!
樓主連幾個數排序都要提問,你確定樓主能看得懂這段代碼 !!!
你就是發VB6的他未必能看懂,還發C++的……
uj5u.com熱心網友回復:
void main(int argc,char**argv) {}
哦,對了,這種風格應該是C ,不是C++ 。
uj5u.com熱心網友回復:
排序演算法是入門級的最基礎演算法,建議樓主先搜索一下常見排序演算法學習一下。uj5u.com熱心網友回復:
明顯的作業貼,沒什么好回答的uj5u.com熱心網友回復:
冒泡最好理解了~uj5u.com熱心網友回復:
在 VB 中,最省事的辦法,就是利用屬性 Sorted = True 的 Listbox 排序。1 利用 List1.Clear 這樣的陳述句清空 ListBox。
2 將 4 個數通過 List1.AddItem a 這一類陳述句放入 LostBox。(不會回圈和陣列,就寫 4 句)。
ListBox 中的數已經自動排序,按 Index 順序讀出即可。
uj5u.com熱心網友回復:
樓上真會玩
uj5u.com熱心網友回復:
那干脆用vb.net 往sortedlist里面扔
uj5u.com熱心網友回復:
排列和排序是一回事?uj5u.com熱心網友回復:
好牛啊!怎么搞的?uj5u.com熱心網友回復:
冒泡,基本的uj5u.com熱心網友回復:
好吧,確實不是一回事。
當時看到這個帖子,想到的是“排序”去了。
也許是樓主的“筆誤”也說不定呢……

如果是要“排列”,那么還得說清楚是“全排列”,還是“選排列”啊;對”排列順序“有沒有要求啊……
等等的條件…… 但樓主卻是P都不放一個…………
uj5u.com熱心網友回復:
也許是Chen8013的“眼誤”也說不定呢......
uj5u.com熱心網友回復:
建個資料庫, 存到資料庫里去, 然后select ...order by還有一個辦法:
1: 用open filename for output 的方法建立以這四個數為名字的空檔案.
2: 用shell呼叫dir/n命令按名字排序輸出, 或者后面加>>xxx.txt把結果輸出到文本......
以上都是受@of123的"啟發"所開的腦洞. 本人只能保證思路可行. 代碼你問他要吧.
uj5u.com熱心網友回復:
Private Sub Command1_Click()Dim a(10) As Integer
For i = 1 To 4
Randomize
a(i) = Int(Rnd * 90) + 10
Next i
For i = 1 To 3
For j = i + 1 To 4
If a(i) > a(j) Then
r = a(i)
a(i) = a(j)
a(j) = r
End If
Next j
Next i
For i = 1 To 4
Print a(i);
Next i
End Sub
uj5u.com熱心網友回復:
哈哈哈, 你盡折騰人.
不過對于不肯學就知道問的人, 我還是同意你的惡心方式的.
uj5u.com熱心網友回復:
可以用選擇排序發和冒泡排序法來對這四個數進行排序。我以從小到大的順序進行示范,代碼如下:
選擇排序法:
for i=1 to n-1
p=i
for j=i+1 to n
if a(p)>a(j) then p=j
next j
temp=a(i): a(i)=a(p): a(p)=temp
next i
冒泡排序法:
for i=1 to n-1
for j=1 to n-i
if a(j)>a(j+1) then
temp=a(j) : a(j)=a(j+1) : a(j+1)=temp
end if
next j
next i
以上是兩種排序發,希望你能采納
uj5u.com熱心網友回復:
誰啊,又把這墳給挖開來uj5u.com熱心網友回復:
在表單上添加四個文本框和一個按鈕,按鈕的代碼如下:Private Sub Command1_Click()
Dim a As Single, b As Single, c As Single, d As Single
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)
If a < b Then m = a: a = b: b = m
If a < c Then m = a: a = c: c = m
If a < d Then m = a: a = d: d = m
If b < c Then m = b: b = c: c = m
If b < d Then m = b: b = d: d = m
If c < d Then m = c: c = d: d = m
Print a, b, c, d
End Sub
然后在表單上j就可以顯示排序結果啦
運行界面如圖
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
4個數abcdshu(1 to 4)
shu1(1 to 4)
shu(1)=a
shu(2)=b
shu(3)=c
shu(4)=d
for j = 1 to 10000
for k = 1 to 4
if shu(k)= j then
for m = 1 to 4
if shu1(m)<>0 then
shu1(m) = shu(k)
exit for
end if
next
exit for
end if
next
next
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/45266.html
標籤:VB基礎類
上一篇:求助。請問哪里出錯了
