只要是2维的怎么变都可以,写个函数就解决了!

这部分我是这么写的!可是输出的结果不对!我看了那个写的!好像和我的差不多!
int calue(struct student *p1, struct student *p2, struct student *p3, int n, int s, int p)
{
int i, j, k;
int print(struct student *p3, int n, int s);
for(i = 0;i < n;i ++)
{
for(j = 0;j < s;j ++)
{
p3->r[i][j] = 0;
for(k = 0;k < p;k ++)
{
p3->r[i][j] = p1->r[i][k]*p2->r[k][j];
}
}
}
print(p3, n, s);
return 0;
}
[此贴子已经被作者于2006-12-4 20:46:10编辑过]
这部分我是这么写的!可是输出的结果不对!我看了那个写的!好像和我的差不多!
int calue(struct student *p1, struct student *p2, struct student *p3, int n, int s, int p)
{
int i, j, k;
int print(struct student *p3, int n, int s);
for(i = 0;i < n;i ++)
{
for(j = 0;j < s;j ++)
{
p3->r[i][j] = 0;
for(k = 0;k < p;k ++)
{
p3->r[i][j] += p1->r[i][k]*p2->r[k][j];
}
}
}
print(p3, n, s);
return 0;
}
最好之前判断一下,是否可以做乘法,即前矩阵的列要等于后矩阵的行.
昨天晚上9点后改论坛一直无法访问,不知为什么,也不知道结果如何,遂我又为你写了一个.
#include "stdio.h"
#define M 2
#define N 4
#define W 3
int main(void) {
int x[M][N]={{1,0,3,-1},
{2,1,0,2}};
int y[N][W]={{4,1,0},
{-1,1,3},
{2,0,1},
{1,3,4}};
int s[M][W]={0};
int i,j,t;
for(t=0;t<M;t++)
for(j=0;j<W;j++)
for(i=0;i<N;i++)
s[t][j]+=x[t][i]*y[i][j];
for(i=0;i<M;i++) {
for(j=0;j<W;j++)
printf("%d ",s[i][j]);
printf("\n");
}
getch();
}