C语言:矩阵A乘B的问题

img


想问问这个应该怎么写啊!如果只用<stdio.h>的话~
麻烦解答一下!谢谢!
简单的写法!麻烦啦
hkljjhgvhbknlj

#include<stdio.h>
int a[105][105],b[105][105],c[105][105];
int main() {
    int ra,ca,rb,cb,i,j;
    scanf("%d%d",&ra,&ca);
    for(i=0; i<ra; i++) {
        for(j=0; j<ca; j++) {
            scanf("%d",&a[i][j]);
        }
    }
    scanf("%d%d",&rb,&cb);
    for(i=0; i<rb; i++) {
        for(j=0; j<cb; j++) {
            scanf("%d",&b[i][j]);
        }
    }
    if(ca!=rb){
        printf("Error: %d != %d",ca,rb);
        return 0;
    }
    for(i=0; i<ra; i++) {
        for(int j=0; j<cb; j++) {
            c[i][j] = 0;
            for(int x=0; x<ca; x++) {
                c[i][j] += a[i][x]*b[x][j];
            }
            printf("%d ",c[i][j]);
        }
        printf("\n");
    }
    return 0;
}

1 如果不一致直接 return 0;
2根据矩阵乘积计算公式计算

#include<stdio.h>
#define N 10 
void Digit(int a[][N],int b[][N],int m,int n,int p);
  
int main()
{
    int m, n, p,c,d;
    int i, j;
    int a[10][10]={0},b[10][10]={0}; 
    scanf("%d%d%d%d",&m,&c,&d,&n);
    if(c!=d)
    {
    printf("Error!: Ca!=Rb");
    return 0;
    }
    p=c;
    for(i=0;i<m;i++)//输入 a[][] 矩阵 
    {
        for(j=0;j<p;j++)
        scanf("%d",&a[i][j]);
    }
    for(i=0;i<p;i++)//输入 b[][] 矩阵 
    {
        for(j=0;j<n;j++)
        scanf("%d",&b[i][j]);
    }
    Digit(a,b,m,n,p);
    return 0;
}
void Digit(int a[][N],int b[][N],int m,int n,int p)//对矩阵进行乘积计算 
{
    int i,j,k,sum=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            for(k=0;k<p;k++)
            {
                sum+=a[i][k]*b[k][j]; //按照定义进行计算 
            } 
            printf("%d ",sum); 
            sum=0;//恢复 sum 的值 
        }
        printf("\n");//得到 m 行 数值 
    }   
}