2012-04-22 06:47:38Morris
For 網友 majiyenai
隨機產生一個 1~9 的九宮格, 每次產生的擺法都不一樣
#include <stdio.h>
int main() {
srand(time(NULL));
int used[10] = {};
int grid[3][3], i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
int x = rand()%9+1;
while(used[x] != 0)
x = rand()%9+1;
used[x] = 1;
grid[i][j] = x;
}
}
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
printf("%d ", grid[i][j]);
}
puts("");
}
getchar();
return 0;
}
#include <stdio.h>
int main() {
srand(time(NULL));
int used[10] = {};
int grid[3][3], i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
int x = rand()%9+1;
while(used[x] != 0)
x = rand()%9+1;
used[x] = 1;
grid[i][j] = x;
}
}
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
printf("%d ", grid[i][j]);
}
puts("");
}
getchar();
return 0;
}
majiyenai
2012-04-23 00:19:34
sorry啦我很愛問問題,那麼麻煩你
majiyenai
2012-04-23 00:18:21
此外不可將 a[x] = 1 放入 while 中, while 是要找出一個"非使用過"的數字, a[x] = 1 代表 x 使用過! 2012-04-23 06:04:39
為什麼我把while的條件改為下面這樣時,它的輸出就會有問題??
while(a[x]!=1){
b[c][d]=x;
a[x]=1;
}
x=rand()%9+1;
版主回應
邏輯上是錯誤的, 當有數字重複時, 再重新產生一個新的數字, 因此 x = rand()%9+1 要在 while 中,此外不可將 a[x] = 1 放入 while 中, while 是要找出一個"非使用過"的數字, a[x] = 1 代表 x 使用過! 2012-04-23 06:04:39
感激不盡,以後有問題我都會想找您討教