본문 바로가기
개념/혼자 공부하는 C언어

chapter 14) 2개 반 3명 학생의 4과목 점수를 저장하는 3차원 배열

by kiseno 2024. 9. 7.
728x90
반응형
SMALL
#include <stdio.h>

int main(void){
    int score[2][3][4] = {
        {{72,80,95,60}, {68,98,83,90}, {75,77,84,90}},
        {{66,85,90,88}, {95,92,88,95}, {43,72,56,75}}
    };

    int i,j,k;

    for (i = 0; i< 2; i++){
        printf("%d class score...\n", i+1);
        for (j = 0; j < 3; j++){
            for (k = 0; k < 4; k++){
                printf("%5d", score[i][j][k]);
            }
            printf("\n");
        }
        printf("\n");
    }

    return 0;
}

### 배열 초기화와 접근

이 코드는 3차원 배열을 사용하여 학생들의 점수를 관리하는 예제입니다. 배열 `score[2][3][4]`는 2개의 반, 각 반에 3명의 학생, 각 학생의 4개 과목 점수를 저장할 수 있습니다. 배열은 다음과 같이 초기화됩니다:
- 첫 번째 반의 학생들 점수: `{{72,80,95,60}, {68,98,83,90}, {75,77,84,90}}`
- 두 번째 반의 학생들 점수: `{{66,85,90,88}, {95,92,88,95}, {43,72,56,75}}`

### 중첩 for 루프를 통한 배열 접근

코드는 3중 중첩된 for 루프를 사용하여 모든 점수를 순회하고 출력합니다.
- 첫 번째 for 루프 (`i`를 인덱스로 사용)는 각 반을 순회합니다.
- 두 번째 for 루프 (`j`를 인덱스로 사용)는 해당 반의 각 학생을 순회합니다.
- 세 번째 for 루프 (`k`를 인덱스로 사용)는 해당 학생의 각 과목 점수를 순회합니다.

### 점수 출력

각 반의 점수는 시작할 때 `"x class score..."`를 출력하여 몇 번째 반의 점수인지 알립니다. 각 점수는 `printf("%5d", score[i][j][k]);`를 사용하여 출력되며, 이는 점수를 최소 너비 5칸에 오른쪽 정렬하여 출력합니다. 학생별 점수 출력 후에는 `printf("\n");`을 사용하여 새 줄로 넘어갑니다. 각 반의 점수 출력이 끝날 때마다 추가적으로 한 줄 더 띄워 반별 구분을 명확히 합니다.

### 프로그램 종료

`return 0;`을 사용하여 프로그램이 성공적으로 실행되었음을 나타내며 프로그램을 종료합니다. 이 예제는 3차원 배열을 사용하여 복잡한 데이터 구조를 관리하고 접근하는 방법을 보여줍니다.

728x90
반응형
LIST