c - 将随机数存储在二维数组中

标签 c

我将一些随机数存储到二维数组中,但有些数字似乎位于侧面/边框上。我不确定它出了什么问题。我想要的是将所有随机数放在二维数组的边界内。

#include <stdio.h>
#include <stdlib.h>

#define ROW 9
#define COL 9


void gameboard(char box[ROW][COL])
{
    int x,y;

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

        box[x][0]='#';
        box[8][x]='#';   
    }    
 }


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

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

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


int main(void)
{
    char box[ROW][COL];
    char name[20];
    int x,y,choice;

    gameboard(box);

    rnum(box);     

    for(x = 0; x < ROW; x++)
    {
        for(y = 0; y  < COL; y++)
        {
         printf(" %c ",box[x][y]);
        }
        printf("\n\n");
    }

    rnum(box);

    return 0;
}

这是输出:

Screen shot of output

最佳答案

如果您需要将随机数范围保持在1-9之间,您可以使用以下函数。但我不知道你需要用多少个随机数来填充这个 block ,所以我把它留给你。

    void rnum(char box[ROW][COL]) {
      int x,r1,r2,r3,r4;
      char r='1';
      srand( (unsigned) time(NULL));
      int iter = 9;
      x = 0;
      while (iter != 0) {
        r1 =  rand()%9;
        r2 =  rand()%9;
        r3 =  rand()%9;
        r4 =  rand()%9;
        if (r1 == 0 || r2 == 0 || r1 == 8 || r2 == 8 ||
            r3 == 0 || r4 == 0 || r3 == 8 || r4 == 8)
          continue;
        else {
          box[r1][r2]= r + x;
          box[r3][r4]= r + x;
          iter--;
        }
        x++;
     }
  }

关于c - 将随机数存储在二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37458414/

相关文章:

c - 使用ascii代码, 'a' , 'b' , 'c' -> 八进制,十进制,十六进制数

c - 如何编写 C 字符串函数 : strncpy , strncat 和 strncmp

c - 二维数组和指针 - C

c - write(2) 失败怎么办?

c - `getchar()` 给出与输入字符串相同的输出

c++ - 用 C 封装 C++ 接口(interface)

c - gcc 宏定义选项不适用于字符串

c - 在 ubuntu 中为 procmon 制作时出错

C 程序未到达 For 循环

c - 这个addfront()函数与nalloc()一起用于链表是错误的吗?