矩阵运算——C语言实现.docx
《矩阵运算——C语言实现.docx》由会员分享,可在线阅读,更多相关《矩阵运算——C语言实现.docx(12页珍藏版)》请在三一文库上搜索。
1、#include stdafx.h#include / 结构体typedef structdouble * mat;int row;int col;Matrix;void InitialMatrix(Matrix *T, int row,int col); / 只分配空间不初始化;void InitialMatrixZero(Matrix *T,int row, int col); /初始化为0void InitialMatrixRand(Matrix *T,int row, int col); / 初始化为50 以内随机正整数void InputMatrix(Matrix *T);/键盘输入
2、矩阵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
3、,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 stru
4、ct 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);/ 矩阵输出in
5、t 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 的子矩阵T
6、2;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(1 :输入一个矩阵,求矩阵均值;n);printf(2 :产生一个随机数矩阵,求矩阵均值;n);printf(3 :输入两个个矩阵,求矩阵和;n);printf(4 :输入两个个矩阵,求矩阵差;n);printf(5 :输入两个矩阵,求矩阵积;);printf(n6 :产
7、生两个随机数矩阵,求矩阵和;n);printf(7 :产生两个随机数矩阵,求矩阵差;n);printf(8 :产生两个随机数矩阵,求矩阵积;n);printf(9: 求矩阵的子阵,如矩阵的2-4 行 D,1-3 列的子阵;n);printf(10 :输入一个方阵,求其逆矩阵n);printf(0: 结束 !n);printf(nn 选择: );scanf(%d, &inputevent);while (inputevent != 0)if (inputevent = 1) printf( 您要输入的矩阵的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);Initi
8、alMatrix(&T, row, col);InitialMatrixZero(&T, T.row, T.col);InputMatrix(&T);printf(n 矩阵的平均值为:n%lfnn, MeanMatrix(&T);DestroyMatrix(&T);if (inputevent = 2) printf( 输入您要产生的矩阵的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&T, row, col);InitialMatrixRand(&T, row, col);MeanMatrix(&T);PrintfMatrix(&
9、T);printf(n 矩阵的平均值为:n%lfnn, MeanMatrix(&T);DestroyMatrix(&T);if (inputevent = 3) printf(您要输入的矩阵A的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&A, row, col);InitialMatrixZero(&A, A.row, A.col);InputMatrix(&A);printf( 您要输入的矩阵B 的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&B, row, co
10、l);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(nn 矩阵的和为:A*Bnn);PrintfMatrix(&C);else printf(nn 无法计算!nn);DestroyMatrix(&A);DestroyMatrix(&B);DestroyMatrix(&C);if (inputevent = 4) printf(您
11、要输入的矩阵A的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&A, row, col);InitialMatrixZero(&A, A.row, A.col);InputMatrix(&A);printf( 您要输入的矩阵B 的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&B, row, col);InitialMatrixZero(&B, B.row, B.col);InputMatrix(&B);InitialMatrix(&C, B.row, B.col);In
12、itialMatrixZero(&C, C.row, C.col);if (MinusMatrix(&A, &B, &C) = 1) printf(n 矩阵的差为:A-B=nn);PrintfMatrix(&C);else printf(nn 无法计算!nn);DestroyMatrix(&A);DestroyMatrix(&B);DestroyMatrix(&C);if (inputevent = 5) int able;printf(您要输入的矩阵 A的行数和列数e.g: 5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&A, row, col);
13、InitialMatrixZero(&A, A.row, A.col);InputMatrix(&A);printf( 您要输入的矩阵B 的行数和列数e.g:5,6: );scanf(%d,%d, &row, &col);InitialMatrix(&B, row, col);InitialMatrixZero(&B, B.row, B.col);InputMatrix(&B);InitialMatrix(&C, A.row, B.col);InitialMatrixZero(&C, C.row, C.col);able = MultiMatrix(&A, &B, &C);if (able =
14、 1) printf(n 积为: A*Bnn);PrintfMatrix(&C);else printf(nn 无法计算!nn);DestroyMatrix(&A);DestroyMatrix(&B);DestroyMatrix(&C);if (inputevent = 6) printf(您要产生的矩阵A的行数和列数e.g:5,6:);scanf(%d,%d, &row, &col);InitialMatrix(&A, row, col);InitialMatrixRand(&A, row, col);printf(A 为: nn);PrintfMatrix(&A);printf( 您要产生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 矩阵 运算 语言 实现
链接地址:https://www.31doc.com/p-14446718.html