关于#矩阵#的问题,如何解决?

矩阵加法
输入:
1,1,2;2,1,3↵
1,2,5;2,1,-3↵
输出:
1,1,2;1,2,5↵
程序:

#include
#include
#define MAX 100
typedef struct {
    int row,col;
    int e;
}Triple;
typedef struct {
    Triple data[101];
}Mat;
int main(){
    Mat *A=(Mat*)malloc(MAX*sizeof(Mat));
    Mat *B=(Mat*)malloc(MAX*sizeof(Mat));
    Mat *C=(Mat*)malloc(MAX*sizeof(Mat));
    scanf("%d,%d,%d;%d,%d,%d\n",&A->data[1].row,&A->data[1].col,&A->data[1].e,&A->data[2].row,&A->data[2].col,&A->data[2].e);
    scanf("%d,%d,%d;%d,%d,%d\n",&B->data[1].row,&B->data[1].col,&B->data[1].e,&B->data[2].row,&B->data[2].col,&B->data[2].e);
    int i,j;
    int m,n;
    int cou=0;
    int flag1=0;
    int flag2=0;
    for(i=1;i<3;i++)
    {
        for(j=1;j<3;j++)
        {
            
            if((A->data[i].row!=B->data[j].row)||(A->data[i].col!=B->data[j].col)) flag1=flag1;
            else flag1++;
                
        }
        if(flag1=0){
                cou++;
                C->data[cou].row=A->data[i].row;
                C->data[cou].col=A->data[i].col;
                C->data[cou].e=A->data[i].e;
        }
        else    {
            int q=1;
            while((A->data[i].row!=B->data[q].row)||(A->data[i].col!=B->data[q].col)){
                j++;
            }
                cou++;
                C->data[cou].row=A->data[i].row;
                C->data[cou].col=A->data[i].col;
                C->data[cou].e=A->data[i].e+B->data[q].e;
                }
            }
    for(m=1;m<3;m++){
        for(n=1;n<3;n++){
            if((A->data[n].row!=B->data[m].row)||(A->data[n].col!=B->data[m].col)) flag2=flag2;
            else flag2++;
        }
        if(flag2=0){
                cou++;
                C->data[cou].row=B->data[m].row;
                C->data[cou].col=B->data[m].col;
                C->data[cou].e=B->data[m].e;
        }
    }    
    for(int p=1;C->data[p].e!=0&&p<5;p++)
    {
        printf("%d,%d,%d;",C->data[p].row,C->data[p].col,C->data[p].e);
    }
    printf("\n");
}

错误类型:0.998 540 保密 否 TLE: 超过时间限制

修改👇两个部分

if(flag1==0){   // 修改此行
        cou++;
        C->data[cou].row=A->data[i].row;
        C->data[cou].col=A->data[i].col;
        C->data[cou].e=A->data[i].e;
}
else    {
    int q=1;
    while((A->data[i].row!=B->data[q].row)||(A->data[i].col!=B->data[q].col)){
        j++;
    }
        cou++;
        C->data[cou].row=A->data[i].row;
        C->data[cou].col=A->data[i].col;
        C->data[cou].e=A->data[i].e+B->data[q].e;
}
if(flag2==0){   // 修改此行
        cou++;
        C->data[cou].row=B->data[m].row;
        C->data[cou].col=B->data[m].col;
        C->data[cou].e=B->data[m].e;
}

#include<stdio.h>
#define N 2
#define M 3
int main()
{
    int arr[N][M];
    int brr[N][M];
    int crr[N][M];
    printf("请输入第一个矩阵的值\n");
    for(int i=0;i<N;i++)
    {
        for(int  j=0;j<M;j++)
        {
            scanf("%d",&arr[i][j]);
            if(i==0)
            {
                crr[i][j]=arr[i][j];
            }
        }
    }
    printf("请输入第二个矩阵的值\n");
    for(int i=0;i<N;i++)
    {
        for(int  j=0;j<M;j++)
        {
            scanf("%d",&brr[i][j]);
            if(i==0)
            {
//                *(*(crr+i+1)+j)=brr[i][j];
                crr[i+1][j]=brr[i][j];
            }
        }
    }
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
        {
            printf("%d ",crr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^