void enterTwoArrays()
{
printf("Enter m!\n");
scanf("%d",&m);
printf("Enter n!\n");
scanf("%d",&n);
int arr[m][n];
printf("Enter m2!\n");
scanf("%d",&m2);
printf("Enter n2!\n");
scanf("%d",&n2);
int arr2[m2][n2];
for(i=0; i<=m-1; i++)
{
for(j=0; j<=n-1; j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=0; i<=m2-1; i++)
{
for(j=0; j<=n2-1; j++)
{
scanf("%d",&arr2[i][j]);
}
}
}
void addition(int arr[m][n], int arr2[m2][n2])
{
int arr3[m][n];
for(i=0; i<=m-1; i++)
{
for(j=0; j<=n-1; j++)
{
arr3[i][j]=arr[i][j]+arr2[i][j];
}
}
}
嘿,我确实有问题。我在C中得到了这两个函数。想法是在第一个函数中我将创建并填充数组。第二个函数将添加两个数组的值。但是,当我尝试时,程序粉碎。我想我知道问题在哪里。它因为我的阵列是本地的,我不能将它们从主要发送到第二个功能。那么我该如何解决这个问题呢?我不能在main / be4 main之前声明这些数组,而不知道n和m变量。
答案 0 :(得分:0)
您可以全局声明指针,并在从用户获取行和列后分配内存。这里我为两个矩阵采用了相同的行和列,因为这是添加矩阵的必要条件。
#include<stdio.h>
#include<stdlib.h>
int *arr;
int *arr2;
int row;
int col;
void enterTwoArrays()
{
int i,j,t=0;
printf("Enter rows!\n");
scanf("%d",&row);
printf("Enter cols!\n");
scanf("%d",&col);
arr=(int*)malloc(row *col *sizeof(int));
arr2=(int*)malloc(row *col *sizeof(int));
printf("Enter the first matrix:\n");
for(i=0; i<(row*col); i++)
{
scanf("%d",(arr+i));
}
printf("Enter the second matrix:\n");
for(i=0; i<(row*col); i++)
{
scanf("%d",(arr2+i));
}
}
void addition(int *arr, int *arr2)
{
int *arr3;
int i;
arr3=(int*)malloc(row*col*sizeof(int));
for(i=0; i<row*col; i++)
{
*(arr3+i)=*(arr+i)+*(arr2+i);
}
printf("The matrix after addition is: \n");
int j,t=0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++,t++)
{
printf("%d ",*(arr3+t));
}
printf("\n");
}
}
void main()
{
enterTwoArrays();
addition(arr,arr2);
}