gpt4 book ai didi

c - 如何初始化没有行或列的二维数组,并创建一个接受用户输入的函数,然后更新二维数组?

转载 作者:行者123 更新时间:2023-11-30 14:34:51 24 4
gpt4 key购买 nike

我真正的目标是初始化一个二维数组,然后调用一个函数来获取行和列的用户输入,然后将二维数组返回到 main 并具有用户指定的大小。

虽然我知道不使用 GetData 函数请求用户输入,而是将输入放入主函数会更有效,但我的教授要求我这样做。

这是具体的提示:

“GetData():编写一个函数,该函数采用二维数组的引用、变量的引用、一个表示行数、另一个表示列数作为参数。在该函数中,它将行数和列数作为用户输入并更新传递给它的变量。然后它根据行数和列数获取矩阵的输入。”

#include <stdio.h>
void GetData(int *rows, int *columns, int matrix[][*columns]);
void Display(int rows, int columns, int matrix[][columns]);
int main(void)
{
int r1, c1, r2, c2;
int m1[r1][c1];
int m2[r2][c2];
printf("Working for Matrix 1\n");
GetData(&r1,&c1,m1);
Display(r1,c1,m1);



return 0;

}

void GetData(int *rows, int *columns, int matrix[][*columns])
{
// maybe instead of void it needs to return an integer pointer?
int a, b, i, j,k;
printf("Enter number of rows and columns: ");
scanf("%d %d",&a,&b);
*rows = a;
*columns = b;
printf("Enter data for %dx%d matrix",*rows,*columns);
for(i = 0;i<*rows;i++)
{
printf("\nrow %d\n",i+1);
for(j=0;j<*columns;j++)
{
scanf("%d",&k);
matrix[i][j] = k;
}
}
}

void Display(int rows, int columns, int matrix[][columns])
{
int i, j;
for (i=0;i<rows;i++)
{
for(j=0;j<columns;j++)
printf("%4d",matrix[i][j]);
}
}

运行此代码时,还会出现段错误,我不太确定这意味着什么或导致它的原因。

最佳答案

当您声明:int m1[r1][c1]时,r1c1统一的。因此,编译器不知道要使m1有多大。对于m2也是如此。

如果您使用(例如)-O2 -Wall 进行编译,编译器会为您标记这一点。

你需要这样的东西:

int
main(void)
{

int r1 = 10;
int c1 = 12;
int m1[r1][c1];

int r2 = 5;
int c2 = 7;
int m2[r2][c2];

...

return 0;
}
<小时/>

但是,您在 GetData 中提示用户输入数组维度,但这在该过程中为时已晚。我会将该提示移至 main 中:

int
main(void)
{
int nrow;
int ncol;

printf("Enter number of rows and columns: ");
scanf("%d %d", &nrow, &ncol);

int m1[nrow][ncol];
int m2[nrow][ncol];

...

return 0;
}

关于c - 如何初始化没有行或列的二维数组,并创建一个接受用户输入的函数,然后更新二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792045/

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