版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include "stdafx.h"#include <stdlib.h>/结构体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 Inpu
2、tMatrix(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 SubM
3、atrix(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:结束!#
4、include <stdio.h>#include <stdlib.h>/结构体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 Destroy
5、Matrix(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, i
6、nt 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(" *nn");printf("1:输入一个矩阵,求矩阵均值;n");printf("2:产生一
7、个随机数矩阵,求矩阵均值;n");printf("3:输入两个个矩阵,求矩阵和;n");printf("4:输入两个个矩阵,求矩阵差;n");printf("5:输入两个矩阵,求矩阵积;");printf("n6:产生两个随机数矩阵,求矩阵和;n");printf("7:产生两个随机数矩阵,求矩阵差;n");printf("8:产生两个随机数矩阵,求矩阵积;n");printf("9:求矩阵的子阵,如矩阵的2-4行D,1-3列的子阵;n");pr
8、intf("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);InitialMatrix(&T, row, col);InitialMatr
9、ixZero(&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, co
10、l);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);
11、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);InitialMatrixZero(&C, C.row, C.col);if (AddMatrix(&A, &a
12、mp;B, &C) = 1) printf("nn矩阵的和为:A*Bnn");PrintfMatrix(&C);else printf("nn无法计算!nn");DestroyMatrix(&A);DestroyMatrix(&B);DestroyMatrix(&C);if (inputevent = 4) printf("您要输入的矩阵A的行数和列数e.g:5,6:");scanf("%d,%d", &row, &col);InitialMatrix(&am
13、p;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);InitialMa
14、trixZero(&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: &q
15、uot;);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.c
16、ol);InputMatrix(&B);InitialMatrix(&C, A.row, 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
17、(&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("您要产生的矩阵B的行数和列数e.g:5,6: ");scanf("%d,%d"
18、, &row, &col);InitialMatrix(&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 (AddMatrix(&A, &B, &C) = 1) printf("n矩阵的和为:A+B=nn");PrintfMatr
19、ix(&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, col);printf(&quo
20、t;您要产生的矩阵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")
21、;PrintfMatrix(&C);else printf("nn无法计算!nn");DestroyMatrix(&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)
22、;printf("A为:nn");PrintfMatrix(&A);printf("您要产生的矩阵B的行数和列数e.g:5,6: n");scanf("%d,%d", &row, &col);InitialMatrix(&B, row, col);InitialMatrixRand(&B, row, col);printf("B为:nn");PrintfMatrix(&B);InitialMatrix(&C, A.row, A.col);InitialMatr
23、ixZero(&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);if (inputevent = 9) printf("对不起,该函数尚在完善中nn");if (inputevent = 1
24、0) NMatrix();if (inputevent = 0)break;printf(" 矩阵函数测试,请选择功能,输入对应的数字:n");printf(" *nn");printf("1:输入一个矩阵,求矩阵均值;n");printf("2:产生一个随机数矩阵,求矩阵均值;n");printf("3:输入两个个矩阵,求矩阵和;n");printf("4:输入两个个矩阵,求矩阵差;n");printf("5:输入两个矩阵,求矩阵积;");printf(
25、"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);return 0;/其
26、他函数void InitialMatrix(Matrix *T, int row, int col)/printf("分配内存中.n");int i;int succ = 1;/T=(Matrix *)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 < T->row; i+) T->m
27、ati = (double *)malloc(T->col * sizeof(double);if (T->mati = NULL) succ = 0;break;/if(succ=1)/ printf("内存分配成功|;?n");/else printf("内存分配失败;n");void InitialMatrixZero(Matrix *T, int row, int col) /printf("矩阵初始化为零中.n");int i, j;for (i = 0; i < row; i+)for (j = 0; j
28、 < col; j+)T->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 InputMatrix(Matrix *T) printf("输入矩阵:n");int i, j;for (i = 0; i < (*T).row; i+
29、)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+)printf("%lf ", (*T).matij);printf(
30、"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;el
31、se 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;elseprintf("这两个矩阵不能相减!n")
32、;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 <(A->col);k+)(*C).matij += (*A).matik * (*B).matkj;return 1; elseprintf("这两个矩阵不能相乘!n");return 0;double MeanMatrix(Matrix *T) /矩阵元素均值double mean;double sum = 0;in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上半年长信保险经纪(四川)有限公司第二批人员招聘1人备考题库及答案详解【网校专用】
- 2026广东湛江市雷州供销助禾农业科技服务有限公司招聘5人备考题库及1套参考答案详解
- 2026安徽安庆市皖宜项目咨询管理有限公司招聘派遣人员3人备考题库及答案详解(易错题)
- 2026海南海控乐城医院(四川大学华西乐城医院)招聘26人备考题库带答案详解ab卷
- 本科组腾讯创意营销总监
- 食品饮料厂生产流程制度
- 2026陕西西北工业大学网络空间安全学院信息系统与智能安全团队招聘1人备考题库及答案详解1套
- 2026中国水利水电科学研究院减灾中心招聘5人备考题库(北京)附答案详解(黄金题型)
- 2026中国科学院广州地球化学研究所科研助理招聘2人备考题库(应用矿物学学科组)及答案详解(网校专用)
- 2026福建福州职业技术学院招聘4人备考题库及答案详解【夺冠系列】
- 单项选择题(句子种类100题)-2024中考英语复习专项训练
- 国际化经营中的风险管理
- 《低压电工实操及考证》全套教学课件
- JJF1033-2023计量标准考核规范
- 《奔富系列宣传》课件
- 病理学与病理生理学(第5版) 课件 丁运良 第七章 发热;第八章 炎症
- 专题37 八年级名著导读梳理(讲义)
- 神经科学研究进展
- 新课标语文整本书阅读教学课件:童年(六下)
- 【RCEP背景下中国对日本农产品出口贸易SWOT及发展对策10000字(论文)】
- CJ/T 124-2016 给水用钢骨架聚乙烯塑料复合管件
评论
0/150
提交评论