




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省青桐鳴2024-2025學年高二下學期3月聯考 數學人教版【含答案】
- 濰坊食品科技職業學院《互動光媒與空間》2023-2024學年第一學期期末試卷
- 山東省臨沂市臨沂市蒙陰縣達標名校2025年中考物理試題命題比賽模擬試卷(13)含解析
- 江西科技師范大學《萬物互聯的通信時代》2023-2024學年第二學期期末試卷
- 內蒙古機電職業技術學院《典型優化問題的模型與算法》2023-2024學年第二學期期末試卷
- 山西省臨汾市古縣2024-2025學年數學三下期末調研試題含解析
- 嘉興南洋職業技術學院《BIM技術與應用C》2023-2024學年第二學期期末試卷
- 上海市上外附中2024-2025學年高三第一次段考物理試題含解析
- 廈門市重點中學2024-2025學年招生全國統一考試仿真卷(十二)-高考英語試題仿真試題含解析
- 江蘇省南京玄武區重點中學2025屆初三英語試題下學期第一次月考試題含答案
- 學生試卷分析萬能模板
- 《中外建筑史》課程標準
- 這個殺手不太冷解析
- 造口袋技術要求
- 國家開放大學(江西)地域文化(專)任務1-4試題及答案
- QCR 409-2017 鐵路后張法預應力混凝土梁管道壓漿技術條件
- 南師地信培養方案
- 采購工作調研報告(3篇)
- 10KV高壓開關柜操作(培訓課件PPT)
- 希爾國際商務第11版英文教材課件完整版電子教案
- 《學弈》優質課一等獎課件
評論
0/150
提交評論