最近有同事在讨论矩阵存储和乘法问题,一时兴起就写了算法.
要求: 矩阵A * 矩阵B ,要求A 和 B是由随机数组成,并且A是按行优先存储的,而B是按列优先存储的, 并输出A * B的结果,可重复计算.
考虑了一下, 矩阵存储可以用二维数组来存储, 但是根据要求矩阵需动态存储,所以采用指针的指针来存储和操作矩阵.
以下为实现代码:
//程序在vs.net2003 控制台下通过
#include "stdafx.h"
#include <time.h>
/********释放空间*********/
void freespace(int **p, int& num)
{
if(!p) return;
int i;
for (i=0; i<num; i++)
free(p[i]);
free(p);
p = NULL;
}
/**********输出数组*******/
void prt(int** p, int& h, int& l)
{
int i,j;
for(i=0;i<h;i++)
{
for(j=0;j<l;j++)
printf(" %5d",p[i][j]);
printf("/n");
}
}
/************输入数组*********/
int** inp(int ** p, int& h, int&