如何在C中使用指针添加两个矩阵[关闭]

问题描述 投票:-2回答:3

我正在尝试编写矩阵应用程序,但无法获得任何输出。我的代码是下图:问题可能出在显示结果的那一行,但我不确定。您可以帮助我了解问题出在哪里吗?

#include

int main()
{
    int *arr1[2][2], *arr2[2][2],*result[2][2];
    printf("Enter First Matris\n");
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<2; j++){
            printf("[%d][%d]= ", i+1, j+1);
            scanf("%d", &arr1[i][j]);
        }
    }

    printf("Enter Second Matris\n");

    for(int i=0; i<2; i++)
    {
        for(int j=0; j<2; j++){
            printf("[%d][%d]= ", i+1, j+1);
            scanf("%d", &arr2[i][j]);
        }
    } 
    printf("result\n");

    for(int i=0; i<2; i++)
    {
        for(int j=0; j<2; j++)
        {
            *sonuc[i][j] = *arr1[i][j] + *arr2[i][j];
            printf("%d ", *result[i][j]);
        }
        printf("\n");

    }

    return 0;
}

c matrix multidimensional-array
3个回答
1
投票

我建议您阅读有关指针和内存分配功能的文章。 malloccallocrealloc及其工作方式。


0
投票

您犯了很多语法错误。检查此代码。

#include<stdio.h>
#include<conio.h>
int main () 
{

int arr1[2][2], arr2[2][2], result[2][2];

printf ("Enter First Matris\n");

for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
      {
scanf ("%d", &arr1[i][j]);

} 
printf ("Enter Second Matris\n");
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
      {

scanf ("%d", &arr2[i][j]);

} 
printf ("result\n");

for (int i = 0; i < 2; i++)
    {

for (int j = 0; j < 2; j++)
    {
result[i][j] =arr1[i][j] +arr2[i][j];
printf ("%d ",result[i][j]);

} 
printf ("\n");


} 

return 0;

}

0
投票

您的代码有很多缺陷。您可以尝试使用指针以这种方式添加矩阵:

#include<stdio.h>
void main()
{
    int a[5][5],b[5][5],c[5][5],i,j,m,n;
    printf("Enter rows & columns:");
    scanf("%d %d",&m,&n);
    printf("Enter first matrix:");
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
            scanf("%d",(*(a+i)+j));
    }

    printf("\nEnter second matrix:");
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
            scanf("%d",(*(b+i)+j));
    }

    printf("\nResult Matrix:\n");
    for(i=0;i<m;i++)
    {   
        for(j=0;j<n;j++)
        {
            *(*(c+i)+j)=*(*(a+i)+j)+ *(*(b+i)+j);
            printf("%d ",*(*(c+i)+j));
        }
        printf("\n");
    }
}

Check for pointer to matrix

© www.soinside.com 2019 - 2024. All rights reserved.