我需要制作一个定义大小的简单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;
}
答案 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,则输出
您在原始代码中也忘记了“;”在垫子[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]