English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

check:我寫了一個有關mark six 的 C programe但我不會把數字排大小(由小至大) & 看看有什麼可以修改
# include
# include
# include
# define N 49 //define 49 number
# define NUM 6 //define 6 number
main()
{
// 1. Generate 1 +ve integer from 1 to 49.
// 2. Accept new generated number only.
// 3. Go to step 1 until 6 different numbers accepted.
// 4. Display your result accordingly.
int count, ans[NUM],temp,i;
printf("This programme will generate 6 lucky number.\n");
printf("============================================\n");
ans[NUM]==0; // to make the value of 6 number be 0 at first
srand(time(NULL)); //random number seed
for(count=0;count {
temp = rand()%N + 1; //sub. the varibale number into array,prevent occur 0 so N+1
for(i=0;i if(temp==ans[i]) // if they are the same
{
temp = rand()% N + 1; // sub. the varibale number into array again
i = 0; // define i is equal to 0
}
ans[count] = temp; // sub. the six generated number into temp
}
printf("The six numbers are : \n");
for ( i=0; i printf(" %d ,", ans[i]); // print the six number
printf("\n============================================\n");
system("PAUSE"); // to hold the windows
}
// this is the end of mark six

2007-02-05 18:22:30 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

2 個解答

在最後的 printf("The six numbers are:") 後加上

for (i=0; i
for (count=i+1; count
if (ans[i]>ans[count]) temp = ans[i], ans[i]=ans[count], ans[count]=temp;
就可以了


2007-02-05 23:45:19 補充:
這程式寫得不好!
而且有個小錯誤!

ans[NUM]==0; // to make the value of 6 number be 0 at first
完全錯誤!
1. 在它的程式架構裡,應該用不到!
2. ans[NUM] == 0 是判斷,不是設定。所以,是個無效碼!
3. ans[NUM] 超過使用範圍,龜毛一點的 compiler 或 OS 會有錯誤訊號!
4. 改成 ans[NUM] = 0 真的超過範圍!程式結果不可預期!

建議:刪除那列!

2007-02-05 23:46:51 補充:
main( ) 應該是 int main( )
它的傳回值是告訴 OS 程式執行的結果。
所以,應該要改為 int main( )

改成 int main( )後,在最後的 } 前要加上
return 0;

2007-02-06 05:18:26 補充:
你這題只要 6 個資料 (NUM=6)
Bubble 是最佳選擇:好寫、程式短、執行快!

要是 NUM = 200 甚至 2000 以上,Bubble 就不一定最最佳選擇了!
因為,它就不是最快的方法了!
那時,它可以算是最慢的!
要用別的 sort (通常是 Quick Sort) 才會快。

2007-02-05 18:39:32 · answer #1 · answered by ? 7 · 0 0

排序的話有很多方法可以用
例如最基本的「泡泡排序法」

void bubbleSort( int n, int a[])
{

int k, j, temp;

for ( k = n-1; k>0; k--)

for ( j = 0; j
if(a[j] > a[j+1])

{ temp = a[j]; a[j]=a[j+1]; a[j+1]=temp;}

}


我寫成副程式,當然你有需要可以直接把他改進主程式裡
把副程式放在main之前即可

其中n為陣列大小,a[]為要排序的陣列

以你的例子
主程式中呼叫
bubbleSort(6,ans);
即可

如果想知道其他的排序法可以再問我



2007-02-05 18:45:53 · answer #2 · answered by 娃娃 6 · 0 0

fedest.com, questions and answers