gpt4 book ai didi

c - 为什么 c 第二次打印时打印不同的数组?

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:48 24 4
gpt4 key购买 nike

我堂兄有一个学校项目,我们无法弄清楚为什么第二次打印时数组不同,而两者之间没有值发生变化?

基本上你输入一个数字来说明矩阵有多少行/列,在第一个循环中他为每个位置分配一个数字并打印出随机数。然而,我们第二次遍历矩阵时,数字是不同的,而且由于某种原因,它们似乎是从矩阵的左下角复制到右上角的。这对我们来说似乎很奇怪,因为我们从来没有在第一次定义数组中的位置后为其分配不同的值。

int i,j,n,matrica[i][j],suma=0;
srand(time(NULL));
printf("\nunesi prirodan broj N[3,20] = \n");
scanf("%d",&n);

for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
matrica[i][j]=rand()%100;
printf("%d, %d = %4d ",i, j, matrica[i][j]);

if(j==n-1) {
printf("\n");
}
}
}

printf("\n");

for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf("%d, %d = %4d ", i, j, matrica[i][j]);

if(j==n-1) {
printf("\n");
}
}
}

结果如下(我粘贴在这里的代码打印了 2 次,在图像中打印了 3 次,但每次你在第一次遍历矩阵后它都会是一样的):

enter image description here

最佳答案

我们需要使用malloc 来分配动态内存量。

之后

 scanf("%d",&n) // PS You should check the return value - read the manual page

 matrica = malloc(sizeof(int) * n * n);

并将其声明为

int *matrica;

然后替换

matrica[i][j]

matrica[i * n + j]

在你完成 matrica 后 - 使用免费即

free(matrica);

关于c - 为什么 c 第二次打印时打印不同的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48057784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com