전에 제가 성적표 2차원배열로 짠 코드는 국영수 합을 n으로 나눠서 이상하게 나온걸 깨달았는데
1차원배열로 짠코드를 보니 여기도 n으로 나누고있더군요
#include <stdio.h>
void Swap(int n,int *num, int *sum, double *avg);
int main()
{
int i, j,num[100], temp,temp1;
int n;
double temp2;
int kor[100],eng[100],mat[100];
double kors=0, engs=0, mats=0;
double avgk=0,avgm=0,avge=0;
int sum[100];
double avg[100];
printf("┌─────────────┐\n");
printf("│성적 처리 프로그램입니다. │\n");
printf("└─────────────┘\n");
printf("성적 처리할 학생들이 몇명입니까? ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("%d번째 학생의 학번을 입력하고 Enter를 누르세요=",i+1);
scanf("%d",&num[i]);
printf("국어점수를 입력하고 Enter를 누르세요=");
scanf("%d",&kor[i]);
printf("영어점수를 입력하고 Enter를 누르세요=");
scanf("%d",&eng[i]);
printf("수학점수를 입력하고 Enter를 누르세요=");
scanf("%d",&mat[i]);
sum[i]=kor[i]+eng[i]+mat[i];
avg[i]=(double)sum[i]/n;
kors+=kor[i];
engs+=eng[i];
mats+=mat[i];
}
Swap(n,num, sum, avg);
avgk=(double)kors/n;
avgm=(double)mats/n;
avge=(double)engs/n;
printf("┌─────────────────┐\n");
printf("│등수순으로 성적처리한 결과입니다. │\n");
printf("└─────────────────┘\n");
for(i=0;i<n;i++)
printf("%d %d %g\n",num[i],sum[i],avg[i]);
printf("국어 평균: %g\n",avgk);
printf("영어 평균: %g\n",avge);
printf("수학 평균: %g\n",avgm);
return 0;
}
void Swap(int n,int *num, int *sum, double *avg)
{
int i,j;
int temp,temp1;
double temp2;
for(i=0; i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(sum[i] < sum[j])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
temp1=sum[i];
sum[i]=sum[j];
sum[j]=temp1;
temp2=avg[i];
avg[i]=avg[j];
avg[j]=temp2;
}
}
}
}
avg[i]=(double)sum[i]/n;
지금 이부분이 이렇게 되어있는데도 책에서 점수 똑같이입력해봐도 똑같이나오네요.. 왜 제대로 돌아가는건가요
그래서 3명이아닌 5명도 입력받아봤는데도 정상적으로나오는데 왜 정상적으로나오죠..?