윤성우의 열혈 C 프로그래밍 - 2차원 배열의 활용 [16-1]

Yumin Jung·2023년 9월 8일
0

p.342 PopuRearch.c 프로그램을 1차원 배열로 구현

2차원 배열을 1차원 배열로 구현하여 2차원 배열이 유용한 이유를 더 깊이 이해하기 위함

#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>

int main(void) {
	int villa[10];

	/*1호라인 거주인원 입력*/
	for (int i = 1; i <= 4; i++) {
		printf("1호라인 %d층 : ",i);
		scanf("%d", &villa[i]);
	}

	/*2호라인 거주인원 입력*/
	for (int j = 1; j <= 4; j++) {
		printf("2호라인 %d층 : ",j);
		scanf("%d", &villa[4 + j]);
	}
	printf("\n\n\n-------------------------------------------------\n\n\n");
	/*층별 인구수 (1호 2호 라인의 합)*/
	for (int k = 1; k <= 4; k++) {
		printf("%d층 합 : %d\n\n", k, (villa[k] + villa[k + 4]));
	}

	return 0;
}

16-1-1 (o)

# include <stdio.h>

int main(void) {
	int arr[3][9];
	int i, j;
	for(i=2; i<=4 ; i++){
		printf("\n\n");
		for (j = 1; j <= 9; j++) {
			arr[i-2][j-1] = i * j;
			printf("%d ", arr[i - 2][j - 1]);
		}
	}
	return 0;
}

내 코드는 답지의 코드와 달리 너무 복잡해보였다. 나는 구구단을 2차원 배열에 입력과 동시에 출력을 하였다. 아래는 답지의 코드이다.

# include <stdio.h>

int main(void) {

	int arr[3][9];
	int i, j;
	
	/*구구단을 저장하자*/
	for (i = 0; i < 3; i++)
		for (j = 0; j < 9; j++)
			arr[i][j] = (i + 2) * (j + 1);

	/*출력하자*/
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 9; j++)
			printf("%4d", arr[i][j]);
		printf("\n");
	}
	return 0;
}

for문의 조건식을 작성할 땐, 최대한 초기식을 0에 근접하게 하는 것이 더 깔끔한 코드가 될 것이라고 깨달았다.

16-1-2 (o)

#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>

int main(void) {
	int arrA[2][4] = { { 1,2,3,4 }, { 5, 6, 7, 8 } };
	int arrB[4][2];

	int i, j;

	/*arrB를 초기화*/
	for (i = 0; i < 2; i++) {
		for (j = 0; j < 4; j++)
			arrB[j][i] = arrA[i][j];
	}

	/*arrB를 출력*/
	for (i = 0; i < 4; i++) {
		for (j = 0; j <2; j++)
			printf("%4d", arrB[i][j]);
	}
}
profile
문과를 정말로 존중해

0개의 댓글