8장 해설
1분 퀴즈
1.
int arr[2][3];
해설_ 2차원 배열은 세로 크기와 가로 크기에 해당하는 값을 순서대로 대괄호 속에 입력합니다. arr[2][3]과 같이 선언하면 3개의 공간을 가진 배열이 2개 있는 2차원 배열이 됩니다.
2. ④
해설_ 다차원 배열은 각 차원을 중괄호로 묶고, 쉼표로 구분합니다. 즉, 1차원 배열을 초기화하듯이 { 1, 2 }에 해당하는 배열과 { 3, 4 }에 해당하는 배열을 쉼표로 구분한 뒤 이를 다시 한번 중괄호로 감싸 줍니다.
3. ③
해설_ 배열의 인덱스는 0부터 시작하며 arr[1][2]는 인덱스를 행과 열로 봤을 때 1행 2열 요소에 해당합니다. 따라서 이 요소의 값인 F가 G로 바뀝니다.
4. ②
해설_ 이중 반복문에서 변수 i는 0, 1 순서대로 커지지만 변수 j는 1, 0 순서대로 작아집니다. 그래서 각 줄의 뒤에서부터 앞으로 오면서 값을 출력합니다.
셀프체크
#include <stdio.h>
int main(void) {
int input = 0; // 사용자 입력을 저장할 변수
// 다차원 배열을 이용해 상품 목록 정의
char * items[3][4] =
{
{"1.우유", "2.커피", "3.주스", "4.탄산음료"},
{"5.칸칩", "6.거북칩", "7.감자칩", "8.고구마칩"},
{"9.안타볼", "10.초코버섯", "11.가재깡", "12.씨리얼"},
};
// 전체 상품 목록 출력
printf("전체 상품 목록입니다.\n");
printf("===============================================\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%-12s", items[i][j]);
}
printf("\n");
}
printf("===============================================\n");
// 사용자 입력
printf("몇 번 상품을 구매하시겠습니까?(1~12) : ");
scanf_s("%d", &input);
// 상품이 12개이므로 1부터 12까지 입력받기
if (input < 1 || input > 12) {
printf("\n상품 번호를 잘못 입력했습니다. 프로그램을 종료합니다.\n");
exit(0); // 프로그램 종료
}
input -= 1; // 배열은 0부터 시작하므로 입력값에서 1 빼기
int x = input / 4; // 행 인덱스 구하기
int y = input % 4; // 열 인덱스 구하기
printf("\n구매하신 상품은 %s입니다.\n", items[x][y]); // 상품 출력
printf("이용해 주셔서 감사합니다.\n");
return 0;
}