#include #include void mul(int **a, int **b, int **c, int n) { int i, j, k, sum; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { sum = 0; for (k = 0; k < n; k++) { sum += a[i][k] * b[k][j]; } c[i][j] = sum; } } } int main() { int i, j, n = 2; int ary_a[2][2]={{1,2},{3,4}}; int ary_b[2][2]={{5,6},{7,8}}; // 動態分配記憶體給矩陣 int **arr_a = (int **)malloc(n * sizeof(int *)); int **arr_b = (int **)malloc(n * sizeof(int *)); int **arr_c = (int **)malloc(n * sizeof(int *)); if (arr_a == NULL || arr_b == NULL || arr_c == NULL) { printf("記憶體分配失敗\n"); return 1; } for (i = 0; i < n; i++) { arr_a[i] = (int *)malloc(n * sizeof(int)); arr_b[i] = (int *)malloc(n * sizeof(int)); arr_c[i] = (int *)malloc(n * sizeof(int)); if (arr_a[i] == NULL || arr_b[i] == NULL || arr_c[i] == NULL) { printf("記憶體分配失敗\n"); return 1; } } for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { arr_a[i][j] = ary_a[i][j]; arr_b[i][j] = ary_b[i][j]; } } // 進行矩陣乘法 mul(arr_a, arr_b, arr_c, n); // 輸出結果 for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("arr_c[%d][%d] = %d\n", i, j, arr_c[i][j]); } } // 釋放記憶體 for (i = 0; i < n; i++) { free(arr_a[i]); free(arr_b[i]); free(arr_c[i]); } free(arr_a); free(arr_b); free(arr_c); return 0; }