프로그래밍언어/C언어[초급]

[C언어][초급] Chapter42. 2차원 배열의 활용 – 반복문과 함께 행렬을 다루는 방법

about_IT 2025. 4. 18. 18:14
728x90

이전 글에서는 2차원 배열을 선언하고 초기화하는 방법을 배웠습니다.
이번에는 이를 실제로 활용하는 방법에 대해 알아보겠습니다.

2차원 배열은 반복문을 중첩해서 사용하면 훨씬 쉽게 입력, 출력, 연산 등을 처리할 수 있습니다.


● 2차원 배열에 값 입력하기

int matrix[2][3];

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        printf("[%d][%d] 값 입력: ", i, j);
        scanf("%d", &matrix[i][j]);
    }
}

중첩 for문을 사용하여 행(row)과 열(col)을 기준으로 입력을 받습니다.


● 2차원 배열 값 출력하기

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

행 단위로 한 줄씩 출력하면 표처럼 데이터를 정렬해서 볼 수 있습니다.


● 전체 합계 구하기

int sum = 0;

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        sum += matrix[i][j];
    }
}
printf("총합: %d\n", sum);

모든 요소를 순회하면서 누적합을 구할 수 있습니다.


● 활용 예: 성적표 출력

int scores[2][3] = {
    {90, 85, 80},
    {88, 92, 76}
};

for (int i = 0; i < 2; i++) {
    printf("%d번 학생: ", i + 1);
    for (int j = 0; j < 3; j++) {
        printf("%d ", scores[i][j]);
    }
    printf("\n");
}

행은 학생, 열은 과목으로 생각하면, 성적표처럼 데이터를 출력할 수 있습니다.


2차원 배열은 표 형태의 데이터를 반복문과 함께 다룰 수 있어 매우 실용적입니다.
반복 구조를 잘 활용하면 입력, 출력, 연산까지 쉽게 처리할 수 있습니다.


● 실습 문제

문제 1

2행 3열의 배열을 입력받고, 입력된 값을 모두 출력하세요.

 

문제 2

입력받은 2차원 배열의 모든 값의 총합을 구해 출력하세요.

 

문제 3

각 행의 합을 따로 구해서 출력하세요.

 

문제 4

3행 2열 배열을 선언하고, 1부터 6까지 순서대로 채워서 출력하세요.

 

문제 5

2차원 배열을 성적표처럼 활용하는 예시를 작성하세요.

 









▶ 정답 확인하기

정답 1

int arr[2][3];

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        scanf("%d", &arr[i][j]);
    }
}

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

 

정답 2

int sum = 0;

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        sum += arr[i][j];
    }
}
printf("총합: %d\n", sum);

 

정답 3

for (int i = 0; i < 2; i++) {
    int row_sum = 0;
    for (int j = 0; j < 3; j++) {
        row_sum += arr[i][j];
    }
    printf("%d행 합: %d\n", i, row_sum);
}

 

정답 4

int num = 1;
int arr[3][2];

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 2; j++) {
        arr[i][j] = num++;
    }
}

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

 

정답 5

int scores[2][3] = {
    {100, 90, 80},
    {95, 85, 75}
};

for (int i = 0; i < 2; i++) {
    printf("%d번 학생: ", i + 1);
    for (int j = 0; j < 3; j++) {
        printf("%d ", scores[i][j]);
    }
    printf("\n");
}
728x90