ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:323.58KB ,
资源ID:4412760      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4412760.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(矩阵运算C语言实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

矩阵运算C语言实现.docx

1、矩阵运算C语言实现矩阵运算C语言实现#include stdafx.h#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); /初始化为0void InitialMatrixRand(Matrix *T,int row, int col); /初始化为50以内随机正整数void InputMatrix

2、(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 SubMatri

3、x(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:结束!#incl

4、ude #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 P

5、rintfMatrix(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

6、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( *nn); printf(1:输入一个矩阵,求矩阵均值;n); printf(2:产生一个随机数矩阵,求矩阵均值;n); printf(3:输入两个个矩阵,求矩阵和;n); printf(4:输入两个个矩阵,求矩

7、阵差;n); printf(5:输入两个矩阵,求矩阵积;); printf(n6:产生两个随机数矩阵,求矩阵和;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

8、.g:5,6:); scanf(%d,%d, &row, &col); InitialMatrix(&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); InitialMatrixR

9、and(&T, row, col); MeanMatrix(&T); PrintfMatrix(&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,

10、6:); scanf(%d,%d, &row, &col); 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(nn矩阵的和为:A*Bnn); PrintfMatrix(&C); else printf(nn无法计算!nn); DestroyMatrix(&A); D

11、estroyMatrix(&B); DestroyMatrix(&C); if (inputevent = 4) 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, col); InitialMatrixZe

12、ro(&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) printf(n矩阵的差为:A-B=nn); PrintfMatrix(&C); else printf(nn无法计算!nn); DestroyMatrix(&A); DestroyMatrix(&B); DestroyMatrix(&C); if (inputevent = 5) int able; printf

13、(您要输入的矩阵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, A.r

14、ow, B.col); InitialMatrixZero(&C, C.row, C.col); able = MultiMatrix(&A, &B, &C); if (able = 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); InitialM

15、atrix(&A, row, col); InitialMatrixRand(&A, row, col); printf(A为:nn); PrintfMatrix(&A); printf(您要产生的矩阵B的行数和列数e.g:5,6: ); scanf(%d,%d, &row, &col); InitialMatrix(&B, row, col); InitialMatrixRand(&B, row, col); printf(B为:nn); PrintfMatrix(&B); InitialMatrix(&C, A.row, A.col); InitialMatrixZero(&C, C.ro

16、w, C.col); if (AddMatrix(&A, &B, &C) = 1) printf(n矩阵的和为:A+B=nn); PrintfMatrix(&C); else printf(nn无法计算!nn); DestroyMatrix(&A); DestroyMatrix(&B); DestroyMatrix(&C); if (inputevent = 7) printf(您要产生的矩阵A的行数和列数e.g:5,6: ); scanf(%d,%d, &row, &col); InitialMatrix(&A, row, col); InitialMatrixRand(&A, row, c

17、ol); printf(您要产生的矩阵B的行数和列数e.g:5,6: ); scanf(%d,%d, &row, &col); InitialMatrix(&B, row, col); InitialMatrixRand(&B, row, col); InitialMatrix(&C, A.row, A.col); InitialMatrixZero(&C, C.row, C.col); if (MinusMatrix(&A, &B, &C) = 1) printf(n矩阵的差为:A-B=nn); PrintfMatrix(&C); else printf(nn无法计算!nn); Destro

18、yMatrix(&A); DestroyMatrix(&B); DestroyMatrix(&C); if (inputevent = 8) printf(您要产生的矩阵A的行数和列数e.g:5,6: n); scanf(%d,%d, &row, &col); InitialMatrix(&A, row, col); InitialMatrixRand(&A, row, col); printf(A为:nn); PrintfMatrix(&A); printf(您要产生的矩阵B的行数和列数e.g:5,6: n); scanf(%d,%d, &row, &col); InitialMatrix(

19、&B, row, col); InitialMatrixRand(&B, row, col); printf(B为:nn); PrintfMatrix(&B); InitialMatrix(&C, A.row, A.col); InitialMatrixZero(&C, C.row, C.col); if (MultiMatrix(&A, &B, &C) = 1) printf(n积为:A*B=nn); PrintfMatrix(&C); else printf(nn无法计算;nn); DestroyMatrix(&A); DestroyMatrix(&B); DestroyMatrix(&C

20、); if (inputevent = 9) printf(对不起,该函数尚在完善中nn); if (inputevent = 10) NMatrix(); if (inputevent = 0) break; printf( 矩阵函数测试,请选择功能,输入对应的数字:n); printf( *nn); printf(1:输入一个矩阵,求矩阵均值;n); printf(2:产生一个随机数矩阵,求矩阵均值;n); printf(3:输入两个个矩阵,求矩阵和;n); printf(4:输入两个个矩阵,求矩阵差;n); printf(5:输入两个矩阵,求矩阵积;); printf(n6:产生两个随机

21、数矩阵,求矩阵和;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); return 0;/其他函数void InitialMatrix(Matrix *T, int row, int col) /printf(分配内存中.n); int i; int succ = 1; /T=(Matrix

22、*)malloc(sizeof(Matrix); T-row = row; T-col = col; T-mat = (double *)malloc(T-row * sizeof(double *); if (T-mat = NULL) succ = 0; else for (i = 0; i row; i+) T-mati = (double *)malloc(T-col * sizeof(double); if (T-mati = NULL) succ = 0; break; /if(succ=1) / printf(内存分配成功|;n); /else printf(内存分配失败;n);

23、 void InitialMatrixZero(Matrix *T, int row, int col) /printf(矩阵初始化为零中.n); int i, j; for (i = 0; i row; i+) for (j = 0; j matij = 0; /printf(矩阵初始化为零矩阵成功;n);void InitialMatrixRand(Matrix *T, int row, int col) int i, j; for (i = 0; i row; i+) for (j = 0; j col; j+) (*T).matij = rand() % 50;void InputMa

24、trix(Matrix *T) printf(输入矩阵:n); int i, j; for (i = 0; i (*T).row; i+) for (j = 0; j (*T).col; j+) scanf(%lf, &(*T).matij);void DestroyMatrix(Matrix *T) int i; for (i = 0; i (*T).row; i+) free(*T).mati);void PrintfMatrix(Matrix *T)int i, j; for (i = 0; i (*T).row; i+) for (j = 0; j (*T).col; j+) prin

25、tf(%lf , (*T).matij); printf(n); int AddMatrix(Matrix *A, Matrix *B, Matrix *C) int i, j; if (*A).row = (*B).row & (*A).col = (*B).col) for (i = 0; i (*A).row; i+) for (j = 0; j (*A).col; j+) (*C).matij = (*A).matij + (*B).matij; for (i = 0; i (*A).row; i+) for (j = 0; j (*A).col; j+) return 1; else

26、 printf(这两个矩阵不能相加!n); return 0; int MinusMatrix(Matrix *A, Matrix *B, Matrix *C) int i, j; if (*A).row = (*B).row & (*A).col = (*B).col) for (i = 0; i (*A).row; i+) for (j = 0; j (*A).col; j+) (*C).matij = (*A).matij - (*B).matij; return 1; else printf(这两个矩阵不能相减!n); return 0;int MultiMatrix(Matrix *A, Matrix *B, Matrix *C) int i=0, j=0; int k = 0; if (*A).col = (*B).row) for (i = 0; i (*A).row; i+) for (j = 0; j (*B).col; j+) for(k=0;k col);k+) (*C).matij += (*A).matik * (*B).matkj; return 1; else printf(这两个矩阵不能

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1