안녕 형들 변수 정의가 너무 더러워도 봐줘
"사용자로 부터 5 명의 학생의 수학, 국어, 영어 점수를 입력 받아서 평균이 가장 높은 사람 부터 평균이 가장 낮은 사람까지 정렬되어 출력하도록 하세요. 특히, 평균을 기준으로 평균 이상인 사람 옆에는 '합격', 아닌 사람은 '불합격' 을 출력하는"
프로그램 짜고있는데 자꾸 오류를 내뿜어서
내가 초보라서 어디가 잘못된지 캐치를 못하고있어서
프갤 고수횽들이 가르쳐줬으면 좋겠어

#include<stdio.h>
int average(int (*arr)[3], int row);

int main()
{
    int arr[5][3];
    int i, j;
   
    for(i=0; i<5; i++){
             for(j=0; j<3; j++){
                      printf("%d번 학생의 %d입력 : ", i+1, j);
                      scanf("%d", &arr[i][j]);
             }
    }
   
    average(arr, 5);
   
    system("PAUSE");
    return 0;
}

int average(int (*arr)[3], int row)
{
    int i, j;
    int sum[5]={0};             //각 학생의 점수의 합
    int avg[5]={0};              //각 학생의 평균
    int total_sum;                 //모든 학생의 점수의 합
    int total_avg;                  //총 학생의 평균
    int *temp;
    int *std;
   
   
    for(i=0; i<5; i++){
             for(j=0; j<3; j++){
                      sum[i]+=arr[i][j];   //학생 각각의 총점
             }
             total_sum+=sum[i];    //총점
             avg[i]=sum[i]/3;      //학생 각각의 평균
    }
    total_avg=total_sum/3;         //총 평균
   
    std=avg;                       //std변수에 평균을 저장해둔 avg배열 입력
   
    for(i=1; i<5; i++){
             for(j=0; j<4; j++){
                      if(std[i]>std[j]){                      //번 학생의 평균이 j번 학생의 평균보다 높으면
                                        *temp=std[i];          //std배열에 저장된 위치를 서로 변경  
                                        std[i]=std[j];
                                        std[j]=*temp;
                      }
             }
    }
    printf("높은순서\n");
    for(i=0; i<5; i++){
             printf("%d   ", std[i]);
             if(avg>=total_avg[i]){
                                printf("합격");
             }else if(avg<total_avg[i]){
                                printf("불합격");
             }
             printf("\n");
    }
    return 0;
}