a[10]은 1차원 배열로 a[x] 로 구성된다.

a[10][10] 배열은 a[x][y]로 x, y 값을 다르게 하면 다른 배열의 요소를 쓸 수 있다.

즉 가로 세로를 표현하는 표, 그림 등을 이용할 때 2차원 배열을 사용하면 편하게 쓸 수 있다.

2차원 배열도 1차원 배열처럼 초기화를 할 수 있다.

a[3][3] = { {1,2,3},{4,5,6},{7,8,9} }

중괄호의 위치에 주목하라

a[1][1]=두번째 배열의 두번째 인수가 되므로 5

배열은 0부터 시작함에 주의하라.

아래 예제는 3*5 행렬의 인자를 랜덤으로 넣은 것을 출력하는 예제이다

#include<stdio.h>
#include<stdlib.h>
#define ROWS 3
#define COLS 5
int main() {
	int s[ROWS][COLS]; //3*5
	int i, j;
	for (i = 0; i < ROWS; i++)
		for (j = 0; j < COLS; j++)
			s[i][j] = rand() % 100;
	for (i = 0; i < ROWS; i++) {
		for (j = 0; j < COLS; j++)
			printf("%02d ", s[i][j]);
		printf("\n");

	}
}

중첩된 반복문에 주의하라

아래 예제는 3*5행렬의 각 행의 합, 각 열의 합을 구하는 예제이다

#include<stdio.h>
int main(void) {
	int a[3][5] = { {12, 56, 32, 16, 98},{99,56,34,41,3},{65,3,87,78,21} };
	for (int i = 0; i < 3; i++)
	{
		int sum=0;
		for (int k = 0; k < 5; k++)
		{
			sum += a[i][k];
		}
		printf("%d행의 합계: %d\n", i, sum);
	}
	printf("\n");
	for (int i = 0; i < 5; i++)
	{
		int sum = 0;
		for (int k = 0; k < 3; k++)
		{
			sum += a[k][i];
		}
		printf("%d열의 합계: %d\n", i, sum);
	}
}

행렬의 순서를 생각한다면 쉽게 이해할 수 있다

카테고리:

업데이트: