前二天,应朋友的要求,帮他写了个C++的矩阵相乘,说真的
我原来连矩阵是什么都不知道,因为我没学过线性代数。。
他给我讲了一下,就写了个!
// jz.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define MaxX 100
#define MaxY 100
#define MaxZ 100
void main()
{
int i,j,k,x,y,z,l;//x,y是矩形的行和列,y,z是B矩阵的行和列
printf("输入A矩阵的行数和列数(用逗号分开):");
scanf("%d,%d",&x,&y);
printf("输入B矩阵的行数和列数(用逗号分开):");
scanf("%d,%d",&l,&z);
if(l!=y)
{
printf("这二个矩阵不能相乘\n");
return;
}
double a[MaxX][MaxZ],b[MaxY][MaxZ];
double c[MaxX][MaxY];
double temp=0.0;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("输入A矩阵的值a[%d][%d]:",i,j);
scanf("%lf",&a[i][j]);
}
}
printf("\n");
for(i=0;i<y;i++)
{
for(j=0;j<z;j++)
{
printf("输入B矩阵的值a[%d][%d]:",i,j);
scanf("%lf",&b[i][j]);
}
}
for(i=0;i<x;i++)/*A矩阵的行数*/
{
for(j=0;j<z;j++)/*B矩阵的列数*/
{
for(k=0;k<y;k++)
{
temp=temp+a[i][k]*b[k][j];
}
c[i][j]=temp;
temp=0;
}
}
printf("\n两矩阵相乘的值为:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%8.2lf",c[i][j]);
}
printf("\n");
}
}