//4.1矩阵运算的设计与实现 #include <stdio.h> #include <string.h> #define M 4 /****----------------------------------------------****/ //函数名:MatrixAdd(int m1[M][M], int m2[M][M], int &result[M][M]) //参数: (传入)int m1[M][M], m2[M][M]矩阵m1和m2 // (传入)int result[M][M],矩阵加计算结果 //作用: 两矩阵相加 //备注: 计算公式为result[i][j] = m1[i][j] + m2[i][j] /****----------------------------------------------****/ void MatrixAdd(int m1[M][M], int m2[M][M], int result[M][M]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { result[i][j] = m1[i][j] + m2[i][j]; } } } /****---------------------------------------------****/ //函数名: MatrixTrams(int m1[M][M], int &result[M][M]) //参数: (传入)int m1[M][M],矩阵m1 //作用: 将矩阵转置 /****---------------------------------------------****/ void MatrixTrams(int m1[M][M], int result[M][M]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { result[i][j] = m1[j][i]; } } } /****--------------------------------------------****/ //函数名: MatrixPlus(int m1[M][M], int m2[M][M], int result[M][M]) //参数: (传入)int m1[M][M], int m2[M][M] 矩阵m1和m2 // (传入)int result[M][M],矩阵乘计算结果 //作用: 两矩阵相乘 //备注: 计算公式为result[i][j] = m1[i][k]*m2[k][j] /****--------------------------------------------****/ void MatrixPlus(int m1[M][M], int m2[M][M], int result[M][M]) { int i, j, k; for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { result[i][j] = 0; for(k = 0; k < 4; k++) { result[i][j] += m1[i][k]*m2[k][j]; } } } } /****--------------------------------------------*****/ //函数名: Display(int result[M][M]) //参数: (传入)int result[M][M],矩阵result //作用: 输出矩阵值 //备注: 按行输出 /****--------------------------------------------****/ void Display(int result[M][M]) { int i, j; printf("The operating result of Matrix:\n"); for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { printf("%d ", result[i][j]); } printf("\n"); } } /***********************测试程序********************/ int main() { int A[M][M]; int B[M][M]; int i, j; printf("Input the first Matrix:\n"); for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { scanf("%d", &A[i][j]); } } printf("Input the second Matrix:\n"); for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { scanf("%d", &B[i][j]); } } int result[M][M]; MatrixAdd(A, B, result); Display(result); memset(result, 0, sizeof(result)); MatrixPlus(A, B, result); Display(result); return 0; }
时间: 2024-10-11 16:35:37