<정보처리기사 실기> Daily 문제 (5) 배열

.·2024년 8월 25일
0

[자격증]

목록 보기
5/10

출처 : 수제비 카페

이 줄은 크기가 4인 정수형 배열 a를 다음과 같이 초기화

a[0] = 3
a[1] = 1
a[2] = 2
a[3] = 0

답 : 2

C 언어에서 2차원 배열은 메모리에 연속적으로 저장된다. 따라서 a[0][4]는 사실상 a[2][0]과 동일한 메모리 위치를 가리킨다.

이를 메모리 관점에서 다시 살펴보면:

a[0][0] -> 1
a[0][1] -> 2
a[1][0] -> 3
a[1][1] -> 4
a[2][0] -> 5
a[2][1] -> 6
따라서 a[0][4]는 a[2][0]과 같은 위치에 있는 값, 즉 5를 가리킨다.

a[]는 문자열 "HELLO"로 초기화된 문자 배열입니다. 이는 메모리에서 {'H', 'E', 'L', 'L', 'O', '\0'}로 저장.
b[]는 정수 값들로 초기화된 배열: {5, 4, 3, 2, 1, 0}.

루프는 문자열 a의 길이만큼 반복 (strlen(a)는 5이므로, i는 0에서 4까지 반복).

배열의 각 요소에 대한 연산
각 반복에서 a[i]에 b[i] 값을 더한다. 이를 통해 a의 각 문자가 변환

반복문을 통해 수행되는 연산:
i = 0:
a[0] = 'H'의 ASCII 값은 72입
b[0] = 5
a[0] += b[0] → 72 + 5 = 77 → 'M'
결과: a[0] = 'M'

i = 1:
a[1] = 'E'의 ASCII 값은 69
b[1] = 4
a[1] += b[1] → 69 + 4 = 73 → 'I'
결과: a[1] = 'I'

i = 2:
a[2] = 'L'의 ASCII 값은 76
b[2] = 3
a[2] += b[2] → 76 + 3 = 79 → 'O'
결과: a[2] = 'O'

i = 3:
a[3] = 'L'의 ASCII 값은 76
b[3] = 2
a[3] += b[3] → 76 + 2 = 78 → 'N'
결과: a[3] = 'N'

i = 4:
a[4] = 'O'의 ASCII 값은 79
b[4] = 1
a[4] += b[4] → 79 + 1 = 80 → 'P'
결과: a[4] = 'P'

최종 문자열
변환이 완료되면, 배열 a[]는 "MIONP"로 변환

따라서, 이 코드의 최종 결과는 a[]가 "MIONP"

이 코드는 3x2 크기의 2차원 배열 a를 다음과 같이 초기화

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

바깥쪽 루프 (i): 열(column)을 순회. i는 0부터 1까지 변하며, 두 번 반복
안쪽 루프 (j): 행(row)을 순회. j는 0부터 2까지 변하며, 세 번 반복

배열 요소 접근
a[j][i]는 행(j)과 열(i)에 위치한 요소를 가리킨다.

루프가 실행될 때 배열의 요소를 다음 순서로 접근하게 된다.

i = 0, j = 0: a[0][0] = 1
i = 0, j = 1: a[1][0] = 3
i = 0, j = 2: a[2][0] = 5
i = 1, j = 0: a[0][1] = 2
i = 1, j = 1: a[1][1] = 4
i = 1, j = 2: a[2][1] = 6

출력 결과
각 printf("%d", a[j][i]); 호출은 해당하는 배열 요소의 값을 출력. 따라서 출력되는 값은 순서대로:

1 3 5 2 4 6


profile
해야 되는 일이 하고 싶은 일로

0개의 댓글