본문 바로가기
프로그래밍언어/C언어[초급]

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

by about_IT 2025. 4. 18.
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");
}
반응형