矩阵运算 - C语言实现 联系客服

发布时间 : 星期三 文章矩阵运算 - C语言实现更新完毕开始阅读07586edbdf88d0d233d4b14e852458fb760b3853

#include \#include //结构体

typedef struct{

double ** mat; int row; int col;

}Matrix;

void InitialMatrix(Matrix *T, int row,int col); //只分配空间不初始化; void InitialMatrixZero(Matrix *T,int row, int col); //初始化为0

void InitialMatrixRand(Matrix *T,int row, int col); //初始化为50以内随机正整数 void InputMatrix(Matrix *T);

//键盘输入矩阵 // 释放矩阵空间 //矩阵输出

void DestroyMatrix(Matrix *T); void PrintfMatrix(Matrix *T);

int AddMatrix(Matrix *A,Matrix *B,Matrix *C); // 矩阵加 int MinusMatrix(Matrix *A,Matrix *B,Matrix *C); // 矩阵减 int MultiMatrix(Matrix *A,Matrix *B,Matrix *C); //矩阵乘法 double MeanMatrix(Matrix *T); //矩阵元素均值

int SubMatrix(Matrix *T1,Matrix *T2,int BeginRow,int BeginCol,int EndRow,int EndCol); //求T1的子矩阵T2;

测试程序参考界面如下所示:

矩阵函数测试,请选择功能,输入对应的数字: *************************************************** 1:输入一个矩阵,求矩阵均值; 2:产生一个随机数矩阵,求矩阵均值; 3:输入两个个矩阵,求矩阵和; 4:输入两个个矩阵,求矩阵差;

5:输入两个个矩阵,求矩阵积; 6:产生两个个随机数矩阵,求矩阵和; 7:产生两个个随机数矩阵,求矩阵差; 8:产生两个个随机数矩阵,求矩阵积;

9:求矩阵的子阵,如矩阵的2-4行,1-3列的子阵; 0:结束!

#include #include

//结构体

typedef struct { double **mat; int row; int col; } Matrix; //函数声明

void InitialMatrix(Matrix *T, int row, int col); void InitialMatrixZero(Matrix *T, int row, int col); void InitialMatrixRand(Matrix *T, int row, int col); void InputMatrix(Matrix *T);

void DestroyMatrix(Matrix *T); // 释放矩阵空间 void PrintfMatrix(Matrix *T); //矩阵输出 int AddMatrix(Matrix *A, Matrix *B, Matrix *C); // 矩阵加 int MinusMatrix(Matrix *A, Matrix *B, Matrix *C); // 矩阵减 int MultiMatrix(Matrix *A, Matrix *B, Matrix *C); //矩阵乘法 double MeanMatrix(Matrix *T); //矩阵元素均值

//int SubMatrix(Matrix *T1, Matrix *T2, int BeginRow, int BeginCol, int EndRow, int EndCol); //求T1的子矩阵T2;

void NMatrix(void);//求逆矩阵

//主函数 int main() { int inputevent; //int i, j; int row, col; Matrix T; Matrix A;

Matrix B; Matrix C;

printf(\ 矩阵函数测试,请选择功能,输入对应的数字:\\n\

printf(\printf(\:输入一个矩阵,求矩阵均值;\\n\

printf(\:产生一个随机数矩阵,求矩阵均值;\\n\printf(\:输入两个个矩阵,求矩阵和;\\n\printf(\:输入两个个矩阵,求矩阵差;\\n\printf(\:输入两个矩阵,求矩阵积;\

printf(\:产生两个随机数矩阵,求矩阵和;\\n\printf(\:产生两个随机数矩阵,求矩阵差;\\n\printf(\:产生两个随机数矩阵,求矩阵积;\\n\

printf(\求矩阵的子阵,如矩阵的2-4行D,1-3列的子阵;\\n\printf(\:输入一个方阵,求其逆矩阵\\n\printf(\结束!\\n\printf(\选择:\scanf(\

while (inputevent != 0) { if (inputevent == 1) { printf(\您要输入的矩阵的行数和列数e.g:5,6:\ scanf(\ InitialMatrix(&T, row, col); InitialMatrixZero(&T, T.row, T.col); InputMatrix(&T);

}

if (inputevent == 2) { }

printf(\输入您要产生的矩阵的行数和列数e.g:5,6:\scanf(\InitialMatrix(&T, row, col);

InitialMatrixRand(&T, row, col); MeanMatrix(&T); PrintfMatrix(&T);

printf(\矩阵的平均值为:\\n%lf\\n\\n\DestroyMatrix(&T);

printf(\矩阵的平均值为:\\n%lf\\n\\n\DestroyMatrix(&T);

if (inputevent == 3) {

printf(\您要输入的矩阵A的行数和列数e.g:5,6:\scanf(\InitialMatrix(&A, row, col);

InitialMatrixZero(&A, A.row, A.col); InputMatrix(&A);

printf(\您要输入的矩阵B的行数和列数e.g:5,6:\scanf(\InitialMatrix(&B, row, col);

InitialMatrixZero(&B, B.row, B.col); InputMatrix(&B);

InitialMatrix(&C, B.row, B.col); InitialMatrixZero(&C, C.row, C.col); if (AddMatrix(&A, &B, &C) == 1) {

printf(\矩阵的和为:A*B\\n\\n\ PrintfMatrix(&C); }

else printf(\无法计算!\\n\\n\

}

DestroyMatrix(&A); DestroyMatrix(&B); DestroyMatrix(&C);

if (inputevent == 4) {

printf(\您要输入的矩阵A的行数和列数e.g:5,6:\scanf(\InitialMatrix(&A, row, col);

InitialMatrixZero(&A, A.row, A.col); InputMatrix(&A);

printf(\您要输入的矩阵B的行数和列数e.g:5,6:\scanf(\InitialMatrix(&B, row, col);

InitialMatrixZero(&B, B.row, B.col); InputMatrix(&B);

InitialMatrix(&C, B.row, B.col); InitialMatrixZero(&C, C.row, C.col); if (MinusMatrix(&A, &B, &C) == 1) {