看板 TransCSI 關於我們 聯絡資訊
※ 引述《idea1825 (小貝殼)》之銘言: : 有關10個亂碼排列要由大排到小 : 程式是醬的!(如下) : /*program: */ : #include<stdio.h> : #include<stdlib.h> : #include<conio.h> : #define MAX(a,b)((a>=(b) ? (a) : (b)) : int main() : { : int i,x[10],k,a,b=9; : int sum,sum1; : for(i=0;i<10;i++) : {a=rand(); : x[i]=(int) 此處改成 x[i]=(int)a; 就沒問題了 遺漏了a; : printf("x[%i]=",i,x[i]); : printf("%i \n",a); : } 但是此程式還可以更好一點 就是讓每次執行時出現的亂數都不同 要不然可以試著將修正後執行的程式run一下 使用 srand() 來改變一開始的亂數值 srand() 需要一個參數做為種子 然後我們使用一定會改變的時間來當作種子 所以必須引入 time() 這個函式 而這個函式完整的定義在 time.h 因此必須多include time.h 以下為修正後的程式 /*program: */ #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> //for time() int main() { int i,x[10],k,a,b=9; int sum; srand(time(NULL)); // 改變程式亂數初值,以時間為參數種子 for(i=0;i<10;i++) { a=rand(); //產生一個亂數 x[i]=(int)a; //將此亂數指定給 x[i] printf("x[%i]=",i,x[i]); printf("%i \n",a); } while(b!=0) { sum=0; for(i=0;i<=b-1;i++) { if (x[i]>x[i+1]) { sum=x[i]; x[i]=x[i+1]; x[i+1]=sum; sum=i; } } //這段排序的程式 我有些小想法 //就是反正sum只是用來 判斷的一個關鍵值 //就算暫時用來做暫存的空間也沒關係 b=sum; } for(i=0;i<10;i++) printf("%d ",x[i]); system("pause"); return(0); } -- ※ 編輯: talama 來自: 123.193.206.232 (05/24 12:02)
idea1825:謝謝^^寫的粉詳細!!我明白了!! 05/25 18:23