본문 바로가기
프로그래밍

[C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 3편]

by 스텔라게이트 2023. 4. 8.

[C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 3편]

[C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 3편]
[C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 3편]

C언어 다차원 배열의 사용

  • C언어 다차원 배열의 개념
  • C언어 2차원 배열 입력
  • C언어 2차원 배열 출력
  • C언어 2차원 배열 예제 

 

C언어 다차원 배열의 개념

int a[2][3] 이라 하면 2차원 배열이 형성 됩니다. 

아래 예시를 보시면 좀 더 쉽게 이해할 수 있습니다.

2차원 배열 

C언어 다차원 배열_2차원
C언어 다차원 배열_2차원

int a[2][3] 이라 하면 "행2개,열3개" 가  생긴다고 보시면 됩니다. 

그래서 a[0][2] 에  5 가 입력되면 a[1][1]에 10이 입력되는 것이죠. 

그래서 위의 배열 방식을 사용하게 되면 여러 다차원 배열을 생성할 수 있습니다. 

C언어 3차원,4차원,5차원 배열

일반적으로 3차원 배열도 가끔 사용하며 4차원과 5차원 배열은 사용하는 사례가 거의 없습니다. 

보통 2차원 배열을 많이 사용한다고 보시면 되겠습니다. 

반응형

C언어 2차원 배열 입력

 

문제 : 배열 a[2][3]의 요소들의 값을 입력 받으려면 어떻게 해야하는가?! 

 

간단히 생각한다면 배열함수를 선언하고 scanf로 a[0][0] 부터 a[1][2] 까지 총 6가지의 값을 입력해야 할 것입니다.

위와 같이 나열 할 수 있겠습니다. 우리는 중첩반복문을 사용하여 더 간단히 사용할 수 있습니다. 

2023.03.10 - [프로그래밍] - [중첩반복문] for문 while문 if_else 포함

2023.03.11 - [프로그래밍] - [중첩반복문] 쉬운설명 if_else 를 이용한 for문 실습

 

C언어 2차원 배열 방법

자 위와 같이 i는 0이고 j가0일때의 값을 입력 받습니다. (scanf) 

그리고 나서 2번째 for문에서 반복되면서 j++ 로인해 i는0,j는1의 값을 입력 받고 i는0,j는2까지 값을 입력 받은 뒤 

다시 위로 올라가 i는 1, j는 0부터 시작, j가 2까지 입력값을 받게 되는 것 입니다. 

지금까지 C언어 2차원 배열 입력을 해보았는데요. 

입력을 해봤으면 출력도 해봐야겠죠? 

반응형

C언어 2차원 배열 출력

문제 : 배열 a[2][3]의 요소들의 값을 출력받으려면 어떻게 해야하는가?! 

위에서 했던 것과 같이 scanf로 a[0][0] 부터 a[1][2] 까지 총 6가지의 값을 나열 했다시피 일반적으로 

printf로 a[0][0] 부터 a[1][2]까지 총 6가지를 나열 할 수 있습니다. 

a[2][3]의 요소들의 값을 출력
a[2][3]의 요소들의 값을 출력

C언어 2차원 배열 출력 방법

아래와 같이 중첩반복문을 참고하여 프로그래밍을 할 수 있습니다. 

그래서 이 2차원 배열의 입력과 출력을 합치면 아래와 같습니다. 

 

C언어 2차원 배열 예제 

#include <stdio.h>
int main(void) { 
int i,j;
int a[2][3];

for(i=0;i<2;i++)
	{
	for(j=0;j<3;j++)
		{
		scanf_s("%d", &a[i][j]);
		}	
	}
for(i=0;i<2;i++)
	{	
	for(j=0;j<3;j++)
		{
		printf("%d \n", a[i][j]);
		}
	}
}

하지만 위와 같이 표기하게 된다면 우리가 위에서 바왔던 2행 3열의 방식이 아닌 아래와 같이 한줄의 형태로 출력됩니다. 

(입력값이 1,2,3,4,5,6)

그래서 2행, 3열 방식으로 변경하기 위해서는 "\n" 의 위치를 변경해 줘야 합니다. 

반응형

C언어 2차원 배열 예제 (상세)

#include <stdio.h>
int main(void) { 
int i,j;
int a[2][3];

for(i=0;i<2;i++)
	{
	for(j=0;j<3;j++)
		{
		scanf_s("%d", &a[i][j]);
		}	
	}
for(i=0;i<2;i++)
	{	
	for(j=0;j<3;j++)
		{
		printf("%d", a[i][j]);
		}
	printf("\n");
	}
}

그럼 어떻게 될까요? 

i가0일때 j의 반복문이 0부터 2까지 진행되고 난 다음 "\n"이 되므로 

아래와 같은 출력값을 얻을 수 있습니다. 

기존 for문에서 했던 별과 공란 출력과 동일한 방법입니다. 

for문에서 했던 별과 공란 출력
for문에서 했던 별과 공란 출력

2023.03.10 - [프로그래밍] - [중첩반복문] for문 while문 if_else 포함

2023.03.11 - [프로그래밍] - [중첩반복문] 쉬운설명 if_else 를 이용한 for문 실습

 

이상 [C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 3편] 에 대한 내용이였습니다.

읽어주셔서 감사합니다.

 

반응형

댓글