#include int a[3][3] = {{1, 3, 5}, {2, -2, 1}, {1, 4, 7}}; int b[3][3] = {{6, 2, 1}, {8, -3, 5}, {2, 4, 1}}; int c[3][3] = {0}; void mat_mult(int a[3][3], int b[3][3]); int main(void) { /* The following lines just reproduce the 'a' and 'b' matrices and present */ /* them in the 3x3 format. This wasn't requested, but it looked neat. :) */ printf("\nThis program multiplies the following two matrices.\n"); printf("\n |%2d %2d %2d|\n", a[0][0], a[0][1], a[0][2]); printf("a = |%2d %2d %2d|\n", a[1][0], a[1][1], a[1][2]); printf(" |%2d %2d %2d|\n", a[2][0], a[2][1], a[2][2]); printf("\n |%2d %2d %2d|\n", b[0][0], b[0][1], b[0][2]); printf("b = |%2d %2d %2d|\n", b[1][0], b[1][1], b[1][2]); printf(" |%2d %2d %2d|\n", b[2][0], b[2][1], b[2][2]); /* Function call for 'c' */ mat_mult(a, b); return 0; } /* Function to produce the product matrix 'c' */ void mat_mult(int a[3][3], int b[3][3]) { printf("\n --------------------------\n"); printf("| and the answer is.... |\n"); printf(" --------------------------\n"); /* The following lines produce the numbers to fill the 'c' 3x3 array */ c[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0]; c[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1]; c[0][2] = a[0][0] * b[0][2] + a[0][1] * b[1][2] + a[0][2] * b[2][2]; c[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0]; c[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1]; c[1][2] = a[1][0] * b[0][2] + a[1][1] * b[1][2] + a[1][2] * b[2][2]; c[2][0] = a[2][0] * b[0][0] + a[2][1] * b[1][0] + a[2][2] * b[2][0]; c[2][1] = a[2][0] * b[0][1] + a[2][1] * b[1][1] + a[2][2] * b[2][1]; c[2][2] = a[2][0] * b[0][2] + a[2][1] * b[1][2] + a[2][2] * b[2][2]; /* The following three lines produce the product matrix in the 3x3 format for viewing */ printf("\n |%3d %3d %3d|\n", c[0][0], c[0][1], c[0][2]); printf("c = |%3d %3d %3d|\n", c[1][0], c[1][1], c[1][2]); printf(" |%3d %3d %3d|\n", c[2][0], c[2][1], c[2][2]); return ; }