c - 二维零数组中的随机一

标签 c arrays for-loop

我正在尝试创建一个由零组成的二维数组,并在其中生成一个随机的数组。但是当我编译它时,它会用 1 填充随机列。我看到错误出现在编写 map 的循环中,因为如果我将所有 for ( j = 0; j <= c; j++ )外面和里面我都换成for (i = 0; i <= l; i++ )它不会填充列,而是填充行。不幸的是,我不知道如何解决它。

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

int main (){
    int l = 20;
    int c = 20;
    int map[l][c];
    int i, j;
    srand(time(NULL));
    int r_colum;
    int r_line;

    r_coluna = rand() % c;
    r_linha = rand() % l;

    /* Create a map of 0 */
    for (i = 0; i <= l; i++ ) {
        for ( j = 0; j <= c; j++ )
        {
            map[i][j] = 0;
        }
    }

    printf("%d %d \n", r_colum, r_line); 
    map[r_linha][r_coluna] = 1;

    /* Write the map*/
    for(i = 0; i < l; i++) {
        for(j = 0; j < c; j++) {
            printf("%d ", map[i][j]);
        }
        printf("\n");
    } 

    return 0;
} 

输出不正确:1 应该位于第 16 行第 4 列,而不是所有列。

The 1 is supposed to be on line 16 column 4, not in all columns.

最佳答案

您最好消除可变长度数组,并使用简单的#define(修复后,复制/粘贴错误r_colunar_linha )。尝试:

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

#define MSIZE 20

int main (void)
{
    int map[MSIZE][MSIZE] = {{0}};
    int i, j, r_colum, r_line;
    srand (time (NULL));

    r_colum = rand () % MSIZE;
    r_line = rand () % MSIZE;

    printf ("%d %d \n", r_colum, r_line);
    map[r_line][r_colum] = 1;

    /* Write the map */
    for (i = 0; i < MSIZE; i++) {
        for (j = 0; j < MSIZE; j++) {
            printf ("%d ", map[i][j]);
        }
        printf ("\n");
    }

    return 0;
}

示例/使用/输出

$ ./bin/arraymap
2 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

相关文章:

c - 是否可以在#define 子句中的函数中声明变量

ruby-on-rails - 如何按多个字符串降序对 Ruby 二维数组进行排序?

javascript - 为什么 "this.todos = [...this.todos, todo] "而不推送?

javascript - 动态改变变量

javascript - 在 "for"循环中填充多维数组 (javascript)

r - 循环遍历数据帧列表以在 R 中创建数据帧

c - 四舍五入整数除法(而不是截断)

c - gcc,内联汇编 - pushad/popad 丢失?

c - C 中的快速 union 实现

java - 在 libgdx 中复制纹理