C/C++

안녕하세요 C언어 2차원 배열관련 의문점이 있어 글 남깁니다!

1
int main(void) { int arr[5][5]; int i, j, sum; for(i=0; i
int main(void)
{
    int arr[5][5];
    int i, j, sum;
    
    for(i=0; i<4; i++)
    {
        sum=0;
        printf("%d번째 학생의 성적 입력 \n", i+1);
        for(j=0; j<4; j++)
        {
            printf("입력 : ");
            scanf("%d", &arr[i][j]);
            sum += arr[i][j];   // 학생 별 점수 합계
        }
        arr[i][4] = sum; // i행의 마지막 배열에 총합 삽입
    }
    
    for(i=0; i<4; i++)
    {
        sum=0;
        for(j=0; j<4; j++)
            sum += arr[j][i]; // 과목별 점수 합계
        
        arr[4][i] = sum; // i열의 마지막 배열에 총합 삽입
        arr[4][4] += sum; // 과목별 점수 총합의 합계
    }
    
    for(i=0; i<5; i++)
    {
        for(j=0; j<5; j++)
            printf("%3d ", arr[i][j]);
        printf("\n");
    }
    return 0;
}

[5][5]크기의 2차원배열에 [0~3][0~3]까지는 값을 입력받고 각 행,열 마지막 배열에 총합을 계산하여

마지막배열의 총합을 또 계산하여 arr[4][4]에 과목별 점수 총합의 합계를 삽입하는 에제문을

풀었습니다만

(모든 입력을 5로 가정하였을 시)

  5  5  5  5  20

  5  5  5  5  20

  5  5  5  5  20

  5  5  5  5  20

20 20 20 20 85 <-문제점 arr[4][4]부분

정답이라면 80이 나와야 하는데 왜5가 더해져서 나오는지 궁금합니다.

(다른 무작위 숫자를 입력해도 5개 더해져서 나옴)

 

또한 arr[4][4] = arr[0][4] + arr[1][4] + arr[2][4] + arr[3][4]

위 식으로 하면 결과가 정확하게 나옵니다만 for문을 활용할 시 5가 더해져서 나옵니다.

어찌하여 이런 현상이 일어나는지 너무 궁금합니다ㅠㅠ

 

사용하는 프로그램은 Xcode-14.0 입니다.

OVi 2022-09-22
OVi 님께서 2022-09-22에 C/C++에 올린 질문

댓글

조회수 137
답글 0
URL