#include <iostream> 
using namespace std; 
#include <stdio.h> 
/* 
*
    任意两个矩阵相乘 
*
    数组采用静态分配,暂定为小于100维的矩阵相乘! 
*/ 
int main() 
{ 
    double a[100][100]={0}; 
    double b[100][100]={0}; 
    double res[100][100]={0}; 
    int line1,col1,line2,col2;//矩阵的行和列 
    cout<<"请顺序输入您要相乘的矩阵的行数和列数:"<<endl; 
    cout<<"顺序:矩阵1的行数,列数;矩阵2的行数,列数。"<<endl; 
    cin>>line1>>col1>>line2>>col2; 
    if(line1>100||col1>100) 
    { 
        cout<<"输入的维数过大!"<<endl; 
        return 0; 
    } 
        if(line1==0||col1==0) 
    { 
        cout<<"矩阵不能为0维!"<<endl; 
        return 0; 
    } 
    if(line2!=col1) 
    { 
        cout<<"输入的两个矩阵无法相乘!"<<endl; 
        return 0; 
    } 
    cout<<"请输入待乘的矩阵a,b"<<endl; 
    cout<<"矩阵a"<<"*****"<<line1<<"行"<<col1<<"列:"<<endl; 
    //输入待乘矩阵a,b 
    for(int i=0;i<line1;i++) 
        for(int j=0;j<col1;j++) 
            cin>>a[i][j]; 
    cout<<"您输入的矩阵a如下:"<<endl; 
    for(i=0;i<line1;i++) 
    { 
        for(int j=0;j<col1;j++) 
            cout<<a[i][j]<<' '; 
        cout<<endl; 
    } 
    cout<<"矩阵b"<<"*****"<<line2<<"行"<<col2<<"列:"<<endl; 
    for(i=0;i<line2;i++) 
        for(int j=0;j<col2;j++) 
            cin>>b[i][j]; 
 
    cout<<"您输入的矩阵b如下:"<<endl; 
    for(i=0;i<line2;i++) 
    { 
        for(int j=0;j<col2;j++) 
            cout<<b[i][j]<<' '; 
        cout<<endl; 
    } 
    //输出结果 
    cout<<"相乘结果为"<<line1<<"行"<<col2<<"列"<<"的矩阵!"<<endl; 
    cout<<"计算结果如下:"<<endl; 
    for(i=0;i<line1;i++) 
    { 
        for(int j=0;j<col2;j++) 
        { 
            for(int k=0;k<col1;k++) 
            { 
                res[i][j]=res[i][j]+a[i][k]*b[k][j]; 
            } 
            cout<<res[i][j]<<' '; 
        } 
        cout<<endl; 
    } 
    return 1; 
}