回 帖 发 新 帖 刷新版面

主题:遇到问题了,高人帮帮忙啊

小弟刚来什么也不懂,不要笑话我啊。一道c的题目。
题目要求如下:

题目描述:
求两个矩阵A、B的乘积C=AB。根据矩阵乘法的定义,只有A的列数和B的行数相同才能相乘。可以确保所有运算结果都在int类型的范围之内。

输入要求:
输入数据为多个矩阵(最少2个),每个矩阵以两个正整数m和n开始,满足0<m,n<=100,接下来为一个m行n列的矩阵A。当输入的m和n均为0时,表示输入数据结束。

输出要求:
对输入的矩阵两两相乘:第1个和第2个相乘、第1个和第2个相乘的结果和第3个相乘……按顺序输出矩阵相乘的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。
若前k个矩阵相乘的结果和第k+1个矩阵无法相乘(即不满足矩阵乘法定义),则输出“Not satisfied the definition of matrix multiplication!”。然后用第k+1个矩阵去和第k+2个矩阵相乘。最后一个矩阵只做乘数。
每两组输出之间用一个空行分隔开。

输入样例:
2 3
1 1 1
1 1 1
3 3
1 2 3
4 5 6
7 8 9
3 1
0
0
0
0 0

输出样例:
12 15 18
12 15 18

0
0





小弟的程序,望大侠纠正。


#include<stdio.h>

int matrix(int m,int n,int a[100][100])
{
    int j,i;
    for(j=0; j<m; j++)
        for(i=0; i<n; i++)
            scanf("%d",&a[j][i]);
    return 0;
}

int cpymatrix(int m,int n,int a[100][100],int b[100][100])
{
    int j,i;
    for(j=0; j<m; j++)
        for(i=0; i<n; i++)
            a[j][i]=b[j][i];
    return 0;
}

int mulmatrix(int mi,int m,int n,int a[100][100],int b[100][100])
{
    int j,i,jj;
    int c[100][100]= {0};
    for(j=0; j<mi; j++)
    {
        for(i=0; i<n; i++)
        {
            for(jj=0; jj<m; jj++)
            {
                c[j][i]+=a[j][jj]*b[jj][i];

            }
        }
    }
    cpymatrix(mi,n,a,c);

    return 0;
}

int putmatrix(int mi,int n,int a[100][100])
{
    int j,i;
    for(j=0; j<mi; j++)
    {
        printf("%d",a[j][0]);
        for(i=1; i<n; i++)
            printf(" %d",a[j][i]);
        printf("\n");
    }
    return 0;
}

int main()
{
    int m,n,t=0,mi=-1,ni=-1;
    int a[100][100]= {0},b[100][100]= {0};
    for(; scanf("%d%d",&m,&n);)
    {
        if(m==0&&n==0)
            break;
        if(t==0)
        {
            matrix(m,n,a);
            mi=m;
            ni=n;
        }
        else
        {
            matrix(m,n,b);
        }
        if(ni==m&&t!=0)
        {
            mulmatrix(mi,m,n,a,b);
            putmatrix(mi,n,a);
            printf("\n");
            ni=n;
        }
        else if(t!=0)
        {
            cpymatrix(m,n,a,b);
            mi=m;
            ni=n;
            printf("Not satisfied the definition of matrix multiplication!\n\n");
        }
        t=1;
    }
    return 0;
}

回复列表 (共3个回复)

沙发

有人么?

板凳

有人的话能先冒个泡么?
第一次发帖,心里没底。

3 楼

结贴了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册