c语言矩阵相乘
1、矩阵相乘函数部分
代码如下(示例):
void fun(int a[10][10],int b[10][10],int m,int p,int n)//定义函数fun
{
int c[m][p];
int i,j,x,t;
for(i=0;i<m;i++)
for(j=0;j<p;j++)
{
c[i][j]=0;
for(x=0;x<n;x++)
c[i][j]+=(a[i][x])*(b[x][j]);//计算相乘后矩阵各个值
}
for(i=0;i<m;i++)//输出相乘后的矩阵
for(t=1,j=0;j<p;j++,t++)
{
printf("%d ",c[i][j]);
if(t%p==0)printf("\n");//p列换行
}
}
2、心得
关键是发现矩阵相乘的规律,然后尽量结构清晰的用代码写出来
3、源程序
#include<stdio.h>
int main()
{
void fun(int a[10][10],int b[10][10],int m,int p,int n);//声明矩阵相乘的函数fun
int a[10][10],b[10][10];
int i,j,m,n,p,t;
printf("请输入矩阵A:\n输入行数和列数: ");//输入矩阵a[m][n]
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("\n请输入矩阵B:\n输入行数和列数:");//输入矩阵b[n][p]
scanf("%d%d",&n,&p);
for(i=0;i<n;i++)
for(j=0;j<p;j++)
scanf("%d",&b[i][j]);
printf("两矩阵为:\n");//两矩阵相乘前
for(i=0;i<m;i++)//表示矩阵a[m][n]
for(t=1,j=0;j<n;j++,t++)
{
printf("%d ",a[i][j]);
if(t%n==0)printf("\n");//n列换行
}
printf("\n");
for(i=0;i<n;i++)//表示矩阵b[n][p]
for(t=1,j=0;j<p;j++,t++)
{
printf("%d ",b[i][j]);
if(t%p==0)printf("\n");//p列换行
}
printf("结果为:\n");
fun(a,b,m,p,n);//调用矩阵相乘函数fun
return 0;
}
void fun(int a[10][10],int b[10][10],int m,int p,int n)//定义函数fun
{
int c[m][p];
int i,j,x,t;
for(i=0;i<m;i++)
for(j=0;j<p;j++)
{
c[i][j]=0;
for(x=0;x<n;x++)
c[i][j]+=(a[i][x])*(b[x][j]);//计算相乘后矩阵各个值
}
for(i=0;i<m;i++)//输出相乘后的矩阵
for(t=1,j=0;j<p;j++,t++)
{
printf("%d ",c[i][j]);
if(t%p==0)printf("\n");//p列换行
}
}