본문 바로가기

코린이

Day14 본문

C언어/C언어 기본문법

Day14

winsome99 2022. 11. 19. 14:01
반응형

 

2차원 배열

1차원 배열 도는 다시 배열로 선언함으로써 여러 개의 배열을 다시 배열로 만드는 방식

2차원 배열 선언 방법: 자료형 배열명[행 크기][열 크기]

2차원 배열을 초기화할 때는 {}와 개행을 적절히 사용해 준다.

int arr[3][3] = {

{1, 2, 3},

{4, 5, 6},

{7, 8, 9} };

2차원 배열을 사용하고 접근할 때는 보통 이중 반복문을 이용해서 접근한다.

 

#include<stdio.h>

int main(){

	int arr[3][3];
	arr[2][1] = 10;
	printf("출력: %d\n",arr[2][1]);

     retrun 0;
}
 
#include<stdio.h>

int main(){

	int arr[3][3] = { 
		{1,2,3},
		{4,5,6},
		{7,8,9}
	};
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}

     retrun 0;
}
 

다음은 1부터 9까지의 배열을 3개씩 3줄로 출력하는 함수로 이중 for 문을 사용하여 출력하였다.

 

2차원 배열을 통해 정수형 공간 10개의 1차원 배열을 또다시 10개를 선언하고 각 공간에 1~100까지의 값을 할당한 뒤 출력을 진행하기

#include<stdio.h>

int main(){

     int cnt = 1;
	int arr[10][10];//100

	//값을 저장해주는 반복문
	for (int i = 0; i < 10; i++) {
			for (int  j = 0; j < 10; j++) {
				arr[i][j] = cnt;
				cnt++;
		     }
	}
	//실행해주는 반복문
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			printf("%3d ", arr[i][j]);
		}
		printf("\n");
	}

     return 0;
}
 

문제 풀이로는 cnt를 1로 지정해 주고 arr 배열은 [10][10]으로 해주어 100개를 만들어준다.

 

이중 for 문에서는 바깥쪽 for 문에서 i의 초깃값 0을 가지고 안쪽 for 문으로 들어간다.

i=0를 가진 안쪽 for 문을 9번 실행한 후 i=0인 상태에서 j가 10까지 증가하여 실행이 완료된 후에는 바깥쪽으로 돌아간다. 그럼 arr[i][j]는 증가하면서 cnt++로 같이 증가한다.

그 후 실행을 해주는 반복문에서 똑같이 이중 for 문을 해준다. printf 문에서 % 3d로 해준 이유는 100이 3자릿수여서 % 3d로 맞춰서 정리해 준다.

위에서 만든 프로그램을 대각선을 기준으로 뒤집어진 모양으로 출력하기

#include<stdio.h>

int main(){

    int cnt1 = 1;
	int arr1[10][10];//100

	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			arr1[i][j] = cnt1;
			cnt1 += 10;
			printf("%3d ",arr1[i][j]);
		}
		cnt1 = i + 2;
		printf("\n");
	}
     return 0;
}
 
 
사진 삭제

사진 설명을 입력하세요.

답이 나오긴 했지만 너무 복잡하게 한거 같다고 들어서 다시 코드로 짰다.

 

#include<stdio.h>

int main(){

    int cnt = 1;
	int arr[10][10];
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			arr[i][j] = cnt;
			cnt++;
		}
	}

	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			printf("%3d ",arr[j][i]);
		}
		printf("\n");
	}
     return 0;
}
 

 

 

정답은 같게 나오지만 좀 더 쉽게 코딩해서 나온 답이다.


 

어렵따 어려워...

 

반응형

'C언어 > C언어 기본문법' 카테고리의 다른 글

Day16  (0) 2023.02.15
Day15  (0) 2022.11.22
Day13  (0) 2022.11.16
Day12  (0) 2022.11.14
Day11  (0) 2022.11.11
Comments