【c语言】矩阵乘法

【c语言】矩阵乘法

1.N*N矩阵
A[N][N]*B[N][N]=C[N][N]

#include
#define N 2
int main()
{
	int A[N][N] = {}, B[N][N] = {}, C[N][N] = {};

	printf_s("请输入矩阵A:\n");
	int i, j;
	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			scanf_s("%d", &A[i][j]);
		}
	}

	printf_s("\n");

	printf_s("A[N][N]为:\n");
	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			printf_s("%d\t", A[i][j]);
		}
		printf_s("\n");
	}

	printf_s("\n");

	printf_s("请输入矩阵B:\n");
	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			scanf_s("%d", &B[i][j]);
		}
	}

	printf_s("\n");

	printf_s("B[N][N]为:\n");
	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			printf_s("%d\t", B[i][j]);
		}
		printf_s("\n");
	}

	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			for (int k = 0; k < N; k++) {/*矩阵乘法是A的行元素分别×B的列元素再相加【前提是A列数=B行数(不等的话无法一对一相乘),结果是C的行数=A的行数,C的列数=B的列数】,C的单个元素计算时i和j不变,变化的是k*/
				C[i][j] += A[i][k] * B[k][j];
			}
		}
	}

	printf_s("\n");

	printf_s("C[N][N]为:\n");
	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			printf_s("%d\t", C[i][j]);
		}
		printf_s("\n");
	}

}

【c语言】矩阵乘法_第1张图片
2.非N*N矩阵

#include
#define N 100

int main()
{
	int a, b, c;/*区分a,b,c关系*/
	printf_s("分别输入矩阵A的行和列以及矩阵B的列:\n");/*矩阵A的列数=矩阵B的行数*/
	scanf_s("%d %d %d", &a, &b, &c);
	int A[N][N] = {}, B[N][N] = {}, C[N][N] = {};

	printf_s("请输入矩阵A:\n");
	int i, j;
	for (i = 0; i < a; i++) {
		for (j = 0; j < b; j++) {
			scanf_s("%d", &A[i][j]);
		}
	}

	printf_s("\n");

	printf_s("A[a][b]为:\n");
	for (i = 0; i < a; i++) {
		for (j = 0; j < b; j++) {
			printf_s("%d\t", A[i][j]);
		}
		printf_s("\n");
	}

	printf_s("\n");

	printf_s("请输入矩阵B:\n");/*矩阵A的列数=矩阵B的行数*/
	for (i = 0; i < b; i++) {
		for (j = 0; j < c; j++) {
			scanf_s("%d", &B[i][j]);
		}
	}

	printf_s("\n");

	printf_s("B[b][c]为:\n");
	for (i = 0; i < b; i++) {
		for (j = 0; j < c; j++) {
			printf_s("%d\t", B[i][j]);
		}
		printf_s("\n");
	}

	for (i = 0; i < a; i++) {/*C的行数=A的行数,C的列数=B的列数*/
		for (j = 0; j < c; j++) {
			for (int k = 0; k < b; k++) {/*b个AB乘积之和=C矩阵元素*/
				C[i][j] += A[i][k] * B[k][j];
			}
		}
	}

	printf_s("\n");

	printf_s("C[a][c]为:\n");
	for (i = 0; i < a; i++) {
		for (j = 0; j < c; j++) {
			printf_s("%d\t", C[i][j]);
		}
		printf_s("\n");
	}

}

【c语言】矩阵乘法_第2张图片

你可能感兴趣的:(c语言,线性代数)