#include "stdafx.h"
#define CLASSES 3
#define STUDENTS 5
#define GRADE 2

int main(int argc, char* argv[])
{
        int s[GRADE][CLASSES][STUDENTS] = {{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},{{16,17,18,19,20},{21,22,23,24,25},{26,27,28,29,30}}};           
        int clas, student, grade, total, subtotal, gradetotal;

        gradetotal = 0;
        
        for(grade = 0; grade< GRADE; grade++)
        {
                total = 0;

                for(clas = 0; clas < CLASSES; clas++)
                {
                        subtotal = 0;
                        for(student = 0; student < STUDENTS; student++)
                        subtotal += s[grade][clas][student];         // 0 0 0         0  2 4  total = 1학년의 성적합      100  12 4 2학년의 성적합
                        printf("%d학년 학급 %d의 평균 성적 = %d\n", grade, clas, subtotal/STUDENTS);
                        
                        total += subtotal;
                        
                }
                gradetotal += total;

                printf("%d학년 전체 학생들의 평균 성적 = %d\n", grade, total/(CLASSES*STUDENTS));
        }
        printf("전교 평균 성적 = %d\n", gradetotal/(GRADE*CLASSES*STUDENTS));

        return 0;
}

------------------------------------------

왜이리될까 고심에 고심을 거듭하여 드디어 알아냄


1학년과 2학년의 학년별 평균값이 1학년건 제대로 나오고 2학년건 제대로 안나오고 또 같이 total을 사용해 평균을 구하는 전체평균은 값이 제대로 나온

단 사실에서 수사를 시작함.

total의 초기화가 해당 for문의 밖에 밖에 가 있어서 total값이 초기화가안되고 중첩이되버려서 2학년 평균값이 이상하게 나오는거였음

그래서 total을 해당 for문의 바로 바깥에다가 초기화를 시켜주고 gradetotal의 초기화를 그밖에 해줌으로서  

전교 평균을 구하는데 쓸 gradetotal지정도 클리어하고 total도 정상적으로 작동하게 되었던 것입니다.

와우 고심에 고심을 거듭하여 결국 문제를 해결할 때의 기분은 정말 환상적

이긴 개뿔 형님들 고기를 주는것보다 고기잡는 법을 가르쳐주려하시는건 알겠지만 전 그냥 고기 먹을래요