在2d数组中显示随机数

时间:2016-06-14 08:26:54

标签: c

我已经构建了一个填充了随机数的2D-array。我希望在17之间生成随机数,每个都有一对。但我不确定为什么有些数字只生成一个数字。我附上以下示例。

这是我的代码:

int gameboard(char box[9][9])
{
    int x, y;
    for(x = 0; x < 9; x++)
    {
        for(y = 0; y < 9; y++)
        {
            box[x][y] ='_'; 
        }
    }

    for(x = 0; x < 9; x++)
    {
        box[0][x]='#';
        box[x][8]='#';
        box[x][0]='#';
        box[8][x]='#';            
    }
}

void rnum(char box[9][9])
{
    int r1,r2,r3,r4,x;
    char r='1',num;
    srand( (unsigned) time(NULL)); 

    for(x=0;x<7;x++)
    {
        r1 = 1 + rand()%7;
        r2 = 1 + rand()%7;
        r3 = 1 + rand()%7;
        r4 = 1 + rand()%7;

        box[r1][r2]= r + x;
        box[r3][r4]= r + x;
    } 

}

输出示例:
enter image description here

1 个答案:

答案 0 :(得分:1)

每个号码都会在您的代码中放置两次。但是你不在乎数字是否覆盖已经放置的另一个数字。您必须检查是否尚未选择地点。

for(x=0;x<7;x++)
{
    do
    {
        r1 = 1 + rand()%7;
        r2 = 1 + rand()%7;
    } while(box[r1][r2] != '_');

    box[r1][r2]= r + x;

    do
    {
        r3 = 1 + rand()%7;
        r4 = 1 + rand()%7;
    } while(box[r3][r4] != '_');

    box[r3][r4]= r + x;
} 

对未来的建议:使用调试器来发现这种麻烦。调试器对于逐步运行程序并观察每个变量的值非常有用。