| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖
标题:计算矩阵乘法的小程序
只看楼主 加入收藏
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
 问题点数:0 回复次数:7 
计算矩阵乘法的小程序

刚刚写了个可以计算矩阵乘法的小程序,主要是方便我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;

}

搜索更多相关主题的帖子: 乘法 矩阵 
2007-01-18 21:50
lzz4438253
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-1-4
收藏
得分:0 

这么长啊


2007-01-18 22:12
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 

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


由于工作,N久都没来了!
2007-01-18 22:28
lzz4438253
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-1-4
收藏
得分: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;
}


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


2007-01-18 22:37
lzz4438253
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-1-4
收藏
得分:0 
  

2007-01-18 22:38
kelifei
Rank: 1
来 自:UESTC
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-11
收藏
得分:0 
其实楼主 的思路挺清晰的,就是太注重人机接口了,看起来有点过。加油!最好把一些功能分出来做成子函数

-DFAE -DESS -DDVD -DMTK  -DDVR -DDECODE -DMSTAR -DPMP我决定在论坛潜水3年又3年!
2007-01-19 08:59
电脑小书虫
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-1-1
收藏
得分:0 

加油。。


有梦最美,希望相随
2007-01-20 22:58
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
是不是还要写行列式变换,还有......,lz干脆把线性代数所有的计算题类行都用c编出来的了,不过我干道一半发现我这门课考过了

我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2007-01-20 23:19
快速回复:计算矩阵乘法的小程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019162 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved