일단 소스를 먼저 보자

#include<stdio.h>
#define NUM 3 //n*n행렬
void Get_Array(int a[NUM][NUM]); //입력받는 함수
int main() {
	int a[NUM][NUM]; //첫번째 배열
	int b[NUM][NUM]; //두번째 배열
	int c[NUM][NUM]; //곱한 후의 배열

	Get_Array(a); //배열 입력받기
	Get_Array(b);

	for (int i = 0; i < NUM; i++) //a*b
	{
		for (int j = 0; j < NUM; j++)
		{
			int sum = 0;
			for (int n = 0; n < NUM; n++)
			{
				sum = sum + a[i][n] * b[n][j];
			}
			c[i][j] = sum;
		}
	}

	for (int i = 0; i < NUM; i++) //c출력
	{
		for (int n = 0; n < NUM; n++)
		{
			printf("%d ", c[i][n]);
		}
		printf("\n");
	}
}
void Get_Array(int d[NUM][NUM]) {
	for (int i = 0; i < NUM; i++)
	{
		for (int j = 0; j < NUM; j++)
		{
			scanf("%d", &d[i][j]);
		}
	}
}

배열의 합은 배열의 인수만 더하면 되지만 배열의 곱은 방법이 약간 다르다

아래는 행렬의 곱의 식이다

https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88

[행렬 곱셈 - 위키백과, 우리 모두의 백과사전

행렬 곱셈 ( matrix multiplication )은 행렬 에 대한 이항연산 이다. 벡터의 선형결합 또는 선형사상 의 합성 등의 의미를 부여할 수 있다. 목차 1 정의 2 예 3 성질 4 각주 4.1 증명주 4.2 참조주 정의 [ 편집 ] A , B 를 각각 m × n , n × p 행렬이라고 하자. A 와 B 의 곱 AB 는 다음과 같은 항을 갖는 m × p 행렬로 정의된다. 즉 앞의 행렬의 열의 수와 뒤의 행렬의 행 수가 동일하지 않으면, 두 행렬의 곱은 정의되지 않는다. 예 [ 편집 ] 행렬 와 가 있을 때, 이 둘의 곱…

ko.wikipedia.org](https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88)

2차원 행렬의 곱을 하기 위해서는 3개의 반복이 필요하다.

[i][j]번째 곱을 알기 위해서는 n까지의 Aik*Bkj 을 더해야 하기 때문에 n까지 더하는 식과 ik를 하나씩 올리는 식이 필요하다

카테고리:

업데이트: