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;
}

majiyenai 2012-04-23 13:42:30

感激不盡,以後有問題我都會想找您討教

majiyenai 2012-04-23 00:19:34

sorry啦我很愛問問題,那麼麻煩你

majiyenai 2012-04-23 00:18:21

為什麼我把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