C 초보 2차원 배열의 행/열의 합구하기 이상한 결과값

조회수 82회

2차원 배열을 난수를 이용해서 만든 후에, 각 행과 각 열의 합계를 구하여 출력한 후 2차원 표로 배열을 출력하는 프로그램입니다. 근데 표랑 도출된 합계값이랑 비교해보면 서로 일치가 안되요. 예를 들어서 2행의 합계는 72라고 뜨는데, 표에서 2행의 합을 실제로 구해보면 179가 나와요. 어디서 잘못된 걸 까요?

#include <stdio.h>
#include <time.h>
#define ROWS 5 //열(가로)
#define COLS 3 //행(세로)

int main(void)
{
    int a[ROWS][COLS];

    srand((unsigned)time(NULL));

    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            a[i][j] = rand() % 100;
        }
    }

    int sum = 0;

    for (int i = 0; i < ROWS; i++)
    {
        sum = 0;

        for (int j = 0; j < COLS; j++)
        {
            sum += a[i][j];
        }

        printf("%d열의 합계: %d\n", i, sum);
    }

    for (int j = 0; j < COLS; j++)
    {
        sum = 0;

        for (int i = 0; i < COLS; i++)
        {
            sum += a[i][j];
        }

        printf("%d행의 합계: %d\n",j ,sum);
    }

    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            printf("%d ", a[i][j]);
        }

        printf("\n");
    }

    return 0;
}

이미지

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    행의 합계를 구하는 루프를 자세히 보시면 오타가 있습니다.

        for (int j = 0; j < COLS; j++)
        {
            sum = 0;
    
            for (int i = 0; i < COLS; i++)
            {
                sum += a[i][j];
            }
    
            printf("%d행의 합계: %d\n",j ,sum);
        }
    

    위의 코드에서 2중 for루프의 조건이 모두 변수 < COLS로 동일합니다. 위의 코드를 아래와 같이 바꾸세요.

        for (int j = 0; j < COLS; j++)
        {
            sum = 0;
    
            for (int i = 0; i < ROWS; i++)
            {
                sum += a[i][j];
            }
    
            printf("%d행의 합계: %d\n",j ,sum);
        }
    
    
    • 정말 감사합니다ㅠㅠㅠㅠㅠㅠ 실수 찾아내기가 이렇게 어렵다니요 ㅠ 정승민 2021.7.10 20:46

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.