用C中的数字填充2D数组

时间:2020-06-10 09:48:22

标签: c

我需要制作一个定义大小的简单2D数组,并用从1开始的数字填充它,有什么想法吗?谢谢

#include <stdio.h>

int main()
{
   int mat[][],  a, b, c, d;

   printf("Number of rows and cumluns?\n");
   scanf("%d%d", &a, &b);
   /* zadam 3 a 4*/
   for (c = 0; c < a; c++)
      for (d = 0; d < b; d++)
         mat[c][d]

   return 0;
}

3 个答案:

答案 0 :(得分:1)

首先,您需要为该2d数组分配内存。 例如,您获得带有变量“ a”和“ b”的用户输入 这样您就可以在用户输入后声明数组

   int a, b, c, d;

   printf("Number of rows and cumluns?\n");
   scanf("%d%d", &a, &b);
   int mat[a][b];

分配完数组所需的内存后,需要在每个位置分配所需的值(取决于c&d变量),例如,我使用d变量值并将它们分配给第二个数组:

for (c = 0; c <= a; c++)
  for (d = 0; d <= b; d++)
     mat[c][d]=d;

然后,您可能希望将数组打印出来,因此,与For循环一样,仅使用print

for (c = 0; c < a; c++){
  for (d = 0; d < b; d++)
     printf("%d ",mat[c][d]);
printf("\n");  

如果a = 2和b = 4,则输出

enter image description here

您在原始代码中也忘记了“;”在垫子[c] [d]之后。

希望这能回答您的问题。

答案 1 :(得分:0)

int a,b,i,j,k=1;
printf("Enter the no of row and col\n");
scanf("%d%d",&a,&b);
int arr[a][b];
for(i=0;i<a;i++){
    for(j=0;j<b;j++){
        arr[i][j]=k;
        k++;
    }
}
for(i=0;i<a;i++){
    for(j=0;j<b;j++){
        printf("%d ",arr[i][j]);
    }printf("\n");
}

答案 2 :(得分:-1)

我只是指出您尚未为2D数组分配任何内存。 如果是动态的,请使用malloc,否则将静态分配,例如int mat[20][20]