同学找我帮忙写的,要求:
矩阵相乘,纯C编写。
不能用C++这点让我十分郁闷啊^_^....
一共包含如下东西:
typedef struct _matrix2D matrix2D; //一个结构体类型matrix2D

BOOL initMatrix(matrix2D* pm, int h, int w); //初始化pm为h×w的零矩阵
void delMatrix(matrix2D* pm);  //矩阵的内部数据空间全部是动态分配的,所以退出之前一定要删除矩阵
int getData(matrix2D* pm, int x, int y);  //返回矩阵pm,坐标为x、y的元素值
void setData(matrix2D* pm, int x,int y, int data);   //将矩阵pm,坐标为x、y的元素值置为data
void setMatrix(matrix2D* lhs, matrix2D* rhs);  //删除矩阵lhs原先的值,并深层拷贝为rhs
matrix2D addMatrix(matrix2D* lhs, matrix2D* rhs);  //矩阵相加,返回一个新的矩阵
matrix2D mulMatrix(matrix2D* lhs, matrix2D* rhs);  //矩阵相乘,返回一个新的矩阵
void printMatrix(matrix2D* pm);  //格式化打印矩阵pm这是一个测试程序,简单相乘两个矩阵:
#include "matrix2d.h"

int main()


{
    int i,j;
    matrix2D  rhs;
    matrix2D  lhs;
    matrix2D  result;

    initMatrix(&lhs, 11, 10);
    initMatrix(&rhs, 10, 2);

        //lhs矩阵设置元素值

    for(i = 0; i<11; i++)
{

        for(j = 0; j<10; j++)
{
            setData(&lhs, i, j, 1);
        }
    }
        //rhs矩阵设置元素值

    for(i = 0; i<10; i++)
{

        for(j = 0; j<2; j++)
{
            setData(&rhs, i, j, i+1);
        }
    }
        //矩阵相乘
    result = mulMatrix(&lhs, &rhs);
        //打印三个矩阵
    printMatrix(&lhs);
    printMatrix(&rhs);
    printMatrix(&result);
        //不用了,记得释放矩阵空间..
    delMatrix(&lhs);
    delMatrix(&rhs);
    delMatrix(&result);
}这里是显示结果:

点击
这里下载完整的源代码和运行程序。
	
posted on 2006-12-07 17:06 
小山日志 阅读(1123) 
评论(4)  编辑 收藏 引用  所属分类: 
the others