版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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以内随
2、机正整数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); /矩
3、阵元素均值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-
4、3列的子阵; 0:结束!#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)
5、;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,
6、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(" *nn");printf("1:输入一个矩阵,求矩阵均值;n");print
7、f("2:产生一个随机数矩阵,求矩阵均值;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列的子
8、阵;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);InitialMatrix(&T, row, col
9、);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(&a
10、mp;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
11、.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);InitialMatrixZero(&C, C.row, C.col);if (AddMatr
12、ix(&A, &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);Init
13、ialMatrix(&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.c
14、ol);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("您要输入的矩阵A的行数和列
15、数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(&
16、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 = 1) printf("n积为:A*Bnn");PrintfMatrix(&C);else printf("nn无法计算!nn");DestroyMatrix(&A);DestroyMatrix(&B);
17、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("您要产生的矩阵B的行数和列数e.g:5,6: ");scanf(&quo
18、t;%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.row, C.col);if (AddMatrix(&A, &B, &C) = 1) printf("n矩阵的和为:A+B=nn"
19、;);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, col
20、);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矩阵的差为:
21、A-B=nn");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(&
22、;A, row, col);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
23、);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);if (inputevent = 9) printf("对不起,该函数尚在完善中nn");if (i
24、nputevent = 10) NMatrix();if (inputevent = 0)break;printf(" 矩阵函数测试,请选择功能,输入对应的数字:n");printf(" *nn");printf("1:输入一个矩阵,求矩阵均值;n");printf("2:产生一个随机数矩阵,求矩阵均值;n");printf("3:输入两个个矩阵,求矩阵和;n");printf("4:输入两个个矩阵,求矩阵差;n");printf("5:输入两个矩阵,求矩阵积;&q
25、uot;);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
26、);return 0;/其他函数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
27、; i+) T->mati = (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+)
28、for (j = 0; j < 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 <
29、 (*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+)printf("%lf ", (*T).m
30、atij);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
31、+)return 1;else 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("这两个矩阵
32、不能相减!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 <(A->col);k+)(*C).matij += (*A).matik * (*B).matkj;return 1; elseprintf("这两个矩阵不能相乘!n");return 0;double MeanMatrix(Matrix *T) /矩阵元素均值double mean;double sum = 0;int i, j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行个人贷款续借合同
- 销售代理协议书范本
- 锌钢护栏网购销合同
- 长期葡萄酒购销协议
- 防水工程合同争议诉讼起诉书
- 防水耳机采购协议
- 饲料添加剂采购合同的合同监管
- 香港地理课堂互动
- 高中数学与大学数学衔接问题研究综述
- 高效化肥订购协议
- 职业教育国家在线课程申报书
- 《新课标引领、新教材启航》初中化学讲座 课件
- 【课件】第一单元课题2+化学实验与科学探究++课件-2024-2025学年九年级化学人教版上册
- 急性冠脉综合征病例讨论
- 2024-2030年中国鞋类行业市场发展趋势与前景展望战略分析报告
- 期中测试卷(试题)-2024-2025学年人教版数学六年级上册
- 共享餐厅合同协议书
- 《研学旅行基地运营与管理》课件-研学基地1.3 现状
- 社区常见病多发病护理常规(22种疾病)2024版
- 12D101-5 110KV及以下电缆敷设
- 光伏行业发展报告2024-2025
评论
0/150
提交评论