当前位置: 代码迷 >> C语言 >> 计算矩阵乘法的小程序
  详细解决方案

计算矩阵乘法的小程序

热度:252   发布时间:2007-01-18 21:50:49.0
计算矩阵乘法的小程序

刚刚写了个可以计算矩阵乘法的小程序,主要是方便我GF做作业.

如果有需要的也可以拿去用看看.

#include "stdio.h"

#define ROW 100

#define COL 100

int main(void){

char ch;

int arry1[ROW][COL]={{0}};

int arry2[ROW][COL]={{0}};

int arry3[ROW][COL]={{0}};

int r1,r2,c1,c2,k=0,i,j;

while(1){

printf("输入矩阵1的行列数\n");

printf("Rows=");

scanf("%d",&r1);

printf("Cols=");

scanf("%d",&c1);

printf("输入矩阵2的行列数\n");

printf("Rows=");

scanf("%d",&r2);

printf("Cols=");

scanf("%d",&c2);

if(c1!=r2){

printf("\n注意:矩阵1的列数与矩阵2的行数不相等不能进行乘运算!\n\n");

continue;

}

else

break;

}

while(1){

printf("\n输入元素矩阵1:\n");

for(i=0;i<r1;i++)

for(j=0;j<c1;j++)

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

fflush(stdin);

printf("矩阵1是/否为:\n");

for(i=0;i<r1;i++){

for(j=0;j<c1;j++)

printf("%2d ",arry1[i][j]);

putchar('\n');
}

printf("\ny/n?");

if((ch=getchar())=='y'||ch=='Y'){

fflush(stdin);

break;

}

else{

fflush(stdin);

continue;

}

}

while(1){

printf("\n输入元素矩阵2:\n");

for(i=0;i<r2;i++)

for(j=0;j<c2;j++)

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

fflush(stdin);

printf("矩阵2是/否为:\n");

for(i=0;i<r2;i++){

for(j=0;j<c2;j++)

printf("%2d ",arry2[i][j]);

putchar('\n');
}

printf("\ny/n?");

if((ch=getchar())=='y'||ch=='Y'){

fflush(stdin);

break;

}

else{

fflush(stdin);

continue;

}

}

for(j=0;j<c2;){

for(i=0;i<r1;){

while(k<c1){

arry3[i][j]+=arry1[i][k]*arry2[k][j];

k++;

if(k==c1){

i++;

k=0;

break;
}
}

if(i==r1){

j++;

break;
}
}

}

printf("\n矩阵1乘以矩阵2为:\n");

for(i=0;i<r1;i++){

for(j=0;j<c2;j++)

printf("%2d ",arry3[i][j]);

putchar('\n');

}


return 0;

}

搜索更多相关的解决方案: 乘法  矩阵  

----------------解决方案--------------------------------------------------------

这么长啊


----------------解决方案--------------------------------------------------------

不是长,是格式变了型.变得好难看哦.


----------------解决方案--------------------------------------------------------

for (int i=0;i<row1;++i)
for (int j=0;j<col2;++j)
{
double sum=0;
for (int k=0;k<col1;++k)
sum+=m1[i][k]*m2[k][j];
m3[i][j]=sum;
}


楼主,我也写了一部分,请你改正啊,我乱写的


----------------解决方案--------------------------------------------------------
  
----------------解决方案--------------------------------------------------------
其实楼主 的思路挺清晰的,就是太注重人机接口了,看起来有点过。加油!最好把一些功能分出来做成子函数
----------------解决方案--------------------------------------------------------

加油。。


----------------解决方案--------------------------------------------------------
是不是还要写行列式变换,还有......,lz干脆把线性代数所有的计算题类行都用c编出来的了,不过我干道一半发现我这门课考过了

----------------解决方案--------------------------------------------------------
  相关解决方案