반환값이 이상합니다
흰꽃
질문 제목 : 반환값이 이상합니다질문 요약 :함수의 매개변수 값을 반환했는데 값이 0으로 바뀝니다.질문 내용 :
#includestdio.h
#includestdlib.h
#includetime.h
typedef struct {
int id;
int score;
char grade;
} student;
void input(student[], FILE *); //학생들의 학번,성적을 읽어들이는 함수
double calcAvg(student[], double); //학생들의 평균을 계산하는 함수
void putGrade(student[], double); //학생들의 학점을 평가하는 함수
void display(student[]); //학번,성적,학점을 출력하는 함수
int main()
{
student check[60];
double ave;
FILE *fp;
//fp와 ave의 값을 초기화시킴
fp = 0;
ave = 0;
srand((unsigned)time(NULL));
input(check, fp);
calcAvg(check, ave);
printf(%.2lf\n\n, ave);
putGrade(check, ave);
display(check);
return 0;
}
void input(student x[], FILE *a)
{
int i;
int fid[60], fscore[60]; //임시로 학생들의 학번, 성적을 저장할 배열
//student.txt를 쓰기 모드로 생성
a = fopen(student.txt, wt);
//파일이 열리지 않으면 에러가 났다고 출력함
if (a == NULL)
{
printf(에러\n);
}
fid[0] = 20114120;
for (i = 0; i 59; i++)
{
fid[i+1] = fid[i] + 1; //60명의 학생들의 학번을 배열에 저장
}
for (i = 0; i 60; i++)
{
fscore[i] = rand() % 100; //60명의 학생들의 성적을 배열에 저장
}
for (i = 0; i 60; i++)
{
fprintf(a, %d %d\n, fid[i], fscore[i]); //파일에 학생들의 학번, 성적을 씀
}
fclose(a); //파일을 닫음
a = fopen(student.txt, rt); //파일을 읽기 모드로 연다
for (i = 0; i 60; i++)
{
fscanf(a, %d %d, &x[i].id, &x[i].score); //파일에 써있는 학번, 성적을 구조체 student의 필드 id, score에 읽어들임
}
fclose(a); //파일을 닫음
}
double calcAvg(student y[], double b)
{
double sum;
int i;
sum = 0; //초기값을 0으로 저장
for (i = 0; i 60; i++)
{
sum = sum + y[i].score; //학생들의 성적의 합을 구함
}
b = sum / 60; //학생들의 성적의 평균을 구함
printf(%.2lf\n\n, b);
return b; //평균값을 반환시킴
}calcAvg함수 내에서 b값을 출력하면 잘 나오는데 b값을 리턴한 후 메인함수에서 ave를 출력하면 0이 나옵니다.
왜 이런지 이유를 모르겠습니다...ㅠ
-
핫팬츠
아하~ 그렇게 변경하니 제대로 나오네요! 감사합니다!
-
태양
리턴한 b값이 ave값이 아닙니다.
ave = calcAvg(check, ave);로 변경해보세요.