신입 개발자 공부 과정

C언어 - 다차원 배열 본문

C/공부

C언어 - 다차원 배열

Lewisjkim 2022. 2. 5. 18:55
기존 배열은 1차원 배열로
int arr[3] 과 같이 썻지만

2차원배열부터는
int arr[3][2] 
3차원배열 
int arr[3][2][2]과 같이 표현한다

1차원배열이

[0] [1] [2]

 였다면,

2차원배열은
ex) int arr[3][2] = {1,2,3,4,5,6};

[0][0] = 1 [1][0] = 3 [2][0] = 5
[0][1] = 2 [1][1] = 4 [2][1] = 6

과 같이 볼 수 있다.
실제로 출력을 해보면

#include <stdio.h>


int main() {
	int arr[3][2] = { 1, 2, 3, 4, 5, 6 };
	printf("%d\n", arr[0][1]);//몇번째 행 몇번째 열: 2
	printf("%d\n", arr[2][1]);//몇번째 행 몇번째 열: 6
	printf("%d\n", arr[1][0]);//몇번째 행 몇번째 열: 3
	return 0;
}

위와 같이 출력되는 것을 확인 할 수 있다.
배열에서 해깔릴 수 있는 점은 우선 첫번쨰는 0으로 보는 점과
행과 열 순서 대로 값이 입력되는 점이라 생각된다.


Quiz=

4행2열의 배열을 만들고 숫자 1부터 순서대로 값을 대입했을 때,
배열[3][0]의 값은 무엇일까요?

과정과 정답은 아래에서 확인 가능합니다.

더보기

코드=

#include <stdio.h>


int main() {
	int arr[4][2] = { 1, 2, 3, 4, 5, 6, 7, 8 };
	printf("%d\n", arr[3][0]);
	return 0;
}

정답= 7

풀이=

arr[0][0] = 1
arr[0][1] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[2][0] = 5
arr[2][1] = 6
arr[3][0] = 7
arr[3][1] = 8

배열에는 행이 우선 그다음에 열의 순서로 값이 대입 되기 때문에 위와 같이 나타낼 수 있다.
고로 int형식의 행이 4개고 열이 2개인 배열 int arr[4][2]
4번째 행 그리고 1번째 열인 arr[3][0] 의 값은 7이 된다.


Quiz2=
코로나로 인해 회사직원의 건강이 염려가 된 Mr.1004는 직원들의 신체검사를 통해 지원금을 지급 하려고한다.
총 회사에는 5명의 직원이 있고, 신체검사 항목은 키와 몸무게만 측정하고 있다.
그 중 3,5번째 직원이 본인의 몸무게가 어떻게 나왔는지 궁금하다고 한다.
다차원 배열을 사용하여 3,5번째 직원의 몸무게를 다음과 같이 출력해보자.

3번째 직원의 몸무게는= **kg이래요
3번째 직원의 몸무게는= **kg이래요

1번쨰 직원= 178, 65kg
2번쨰 직원= 180,76kg
3번쨰 직원= 158, 56kg
4번째 직원= 165, 55kg
5번쨰 직원= 175, 69kg

정답은 아래

더보기

코드=

#include <stdio.h>

int main() {
	int bodycheck[5][2] = { 178, 65, 180, 76, 158, 56, 165, 55, 175, 69 };
	printf("3번째 직원의 몸무게는= %dkg이래요\n", bodycheck[2][1]);
	printf("5번째 직원의 몸무게는= %dkg이래요\n", bodycheck[4][1]);
	return 0;
}

정답=

풀이=
각 행을 직원의 수인 5로 정하고
열의 수는 각 직원들의 키 와 몸무게의 정보를 입력 할 것이어서 2개로 정했다.


Quiz3=
이번에는 3명의 학생의 키와 신발사이즈를 입력하고
출력해 보도록하자

*참고
1학생= 170, 260
2학생= 180,270
3학생= 160,265

정답은 아래

더보기

코드=

#include <stdio.h>

int main() {
	int size[3][2];
	int i, j;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 2; j++)
		{
			if (j == 0)
			{
				printf("키를 입력해주세요:\n");
				scanf_s("%d", &size[i][j]);
			}
			else
			{
				printf("신발 사이즈를 입력해주세요:\n");
				scanf_s("%d", &size[i][j]);
			}
		}
	}
	for (i = 0; i < 3; i++)
	{
		printf("%d번째 학생의 키는 %d, 신발 사이즈는 %d입니다.\n",
			i+1, size[i][0], size[i][1]);
	}
	return 0;
}

정답=

풀이=
우선은 학생(i) 마다 키와 몸무게를(j)를 입력받아야 되므로
2중 for문을 사용하였고
그 안에서 if, else문을 사용하여 j가 1번쨰일때 키를 입력받고,
j가 2번째일때 신발사이즈를 입력받았다.



2차원 배열을 연습했으면
3차원 배열을 연습해보려고한다
3차원 배열은
int arr[2][3][4]; 와 같이 표현하고
만약 아파트 동 층 호수로 표현하면 다음과 같이 이해할 수 있다.

#include <stdio.h>

int main() {
	int size[2][2][2];
	printf("동호수를 배열에 입력한다.\n");
	for (int i = 0; i < 2; i++)
	{
		if (i == 0)
		{
			printf("1동\n");
		}
		else
		{
			printf("2동\n");
		}
		for (int j = 0; j < 2; j++)
		{
			if (j == 0)
			{
				printf("1층");
			}
			else
			{
				printf("2층");
			}
			for (int h = 0; h < 2; h++)
			{
				if (h == 0)
				{
					printf("1호,");
				}
				else
				{
					printf("2호\n");
				}
			}
		}
	}
				
	return 0;
}