如何用C語言寫
在N*N的表格內
隨機產生0~N*N-1 的數字
而且不重複...
2006-12-18 07:21:58 · 3 個解答 · 發問者 風 1 in 電腦與網際網路 ➔ 程式設計
希望可以用 二維陣列方式儲存...
還要用N*N方陣 PRINT 出來
2006-12-19 14:55:27 · update #1
#include
#include
#define N 20
int main()
{
int num[N*N], a[N*N], b;
int i, j;
b = N*N;
srand(time(NULL));
i = 0;
do
{
j = rand() % b;
if (a[j] == 0) /* 沒產生過的才要 */
{
a[j]=1; /* 標示已經產生過 */
num[++i]=j; /* 記錄所產生的號碼 */
}
} while (i < b);
/* N 太大時 小心對不齊 */
for (i=0; i<=N-1; i++)
{
for (j = 1; j <= N; j++)
printf("%4d", num[i*N+j]);
printf("\n");
}
system("pause");
}
2006-12-18 08:46:20 · answer #1 · answered by JJ 7 · 0⤊ 0⤋
測試可以於DEV C++正確執行
我是參照琳琳的想法做的 !!
GOOD IDEA
#include
#include
#include
#define N 10
void Printf(int [][N]);
void Srand(int [][N]);
int main()
{
int i,j,array[N][N];
for(i=0;i
for(j=0;j
}
Printf(array);//印出初始順序陣列
Srand(array);//進行亂數排序
Printf(array);//印出洗牌後的陣列
system("pause");
}
void Printf(int array[][N])
{
int x,y;
for(x=0;x
for(y=0;y
printf("\n");
}
}
void Srand(int array[][N])
{
srand(time(NULL));
int a,b,temp,index1,index2;
for(a=0;a
index1=rand()%N;
index2=rand()%N;
temp=array[a][b];
array[a][b]=array[index1][index2];
array[index1][index2]=temp;
}
}
2006-12-20 16:39:17 補充:
CODE是你想要的
N*N二維矩陣阿 @@
沒錯啊?!
2006-12-18 11:26:32 · answer #2 · answered by Anonymous · 0⤊ 0⤋
用類似洗牌的方式
先產生連續的 0 ~ n*n-1 數字在 n*n 陣列
之後再利用亂數對裡面的元素做交換,把它弄亂.
2006-12-18 08:01:56 · answer #3 · answered by 鳳琳 5 · 0⤊ 0⤋