69,369
社区成员
发帖
与我相关
我的任务
分享
typedef struct{ float * data;int col,row;} array;
array a,b,c;
/*c=a*b;*/
int cheng(array a,b,*c)
{ int i,j;
if(a.row!=b.col)
return (0);
else
{ c->col=a.col;
c->rol=b.row;
for(int i = 0; i < a.col; i++ )
for(int j = 0; j < a.row; j++ )
{ {[[ {{{{
*(c->data+i*sizeof(int)+j) = 0.0;
for(int k = 0; k < n; k++ )
*(c->data+i*sizeof(int)+j) += a[i*n+k]*b[k*l+j];
}
return(1);
}
}
// 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");
}
}