推 idea1825:謝謝^^寫的粉詳細!!我明白了!! 05/25 18:23
※ 引述《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)