main.c
#include "student.h"
#include "classroom.h"
#define MAX_STUDENT_NUM 10 // $B@8EL>pJs%G!<%?$N:GBgEPO?2DG=?t(B
// $B8=:_$NEPO?@8EL?t(B
int student_num;
int
main(void){
classroom cls;
student st[MAX_STUDENT_NUM];
// $BEPO?@8EL?t$N=i4|2=(B
student_num = 0;
// $B?75,$G@8EL>pJs$rDI2C$9$k(B
set_student_data(&st[student_num],10,"$BNkLZ(B",70,40,50);
set_student_data(&st[student_num],21,"$BEDCf(B",60,50,40);
set_student_data(&st[student_num],15,"$B5HED(B",60,70,80);
// ID21$B$N>pJs$rI=<($9$k(B
print_student_average(st,21);
// $B%/%i%9A4BN$NJ?6QE@$rI=<($9$k(B
print_class_average(&cls,st);
// $B?75,$G@8EL>pJs$rDI2C$9$k(B
set_student_data(&st[student_num],34,"$B66K\(B",50,40,90);
// ID10$B$N>pJs$rI=<($9$k(B
print_student_average(st,10);
// $BDI2C8e$N%/%i%9A4BN$NJ?6QE@$rI=<($9$k(B
print_class_average(&cls,st);
return 0;
}
student.h
#define _CRT_SECURE_NO_DEPRECATE // sprintf()$B$N%(%i!<2sHr(B
#include <stdio.h>
typedef struct _student{
int id; // $B@8EL$N(BID$BHV9f(B
char name[20]; // $B@8EL$NL>A0(B
int kokugo; // $B9q8l$NE@?t(B
int suugaku; // $B?t3X$NE@?t(B
int eigo; // $B1Q8l$NE@?t(B
}student;
// $B8=:_$NEPO?@8EL?t(B
int student_num;
// $B?75,$N@8EL$N%G!<%?$rEPO?$9$k(B
void set_student_data(student* st,int id,char* name,int kokugo,int suugaku,int eigo);
// id$BHV9f$+$iEPO?$5$l$F$$$k@8EL$NJ?6QE@$rI=<($9$k(B
void print_student_average(student st[],int id);
student.c
#include "student.h"
void
set_student_data(student* st,int id,char* name,int kokugo,int suugaku,int eigo){
st->id = id;
sprintf(st->name,"%s",name);
st->kokugo = kokugo;
st->suugaku = suugaku;
st->eigo = eigo;
student_num++;
}
void
print_student_average(student st[],int id){
int i;
for(i=0;i<student_num;i++) {
if(id == st[i].id) {
printf("ID %d $B$N(B %s $B$5$s$NJ?6QE@$O(B %f $BE@$G$9(B\n",id,st[i].name,average(st[i]));
return;
}
}
printf("ID %d $B$OB8:_$7$^$;$s(B\n",id);
return;
}
double
average(const student st){
return ((st.kokugo+st.suugaku+st.eigo)/3.0);
}
classroom.h
#ifndef CLASSROOM_H
#define CLASSROOM_H
#include <stdio.h>
#include "student.h"
typedef struct _classroom{
double kokugo; // $B9q8l$N%/%i%9J?6QE@(B
double suugaku; // $B?t3X$N%/%i%9J?6QE@(B
double eigo; // $B1Q8l$N%/%i%9J?6QE@(B
}classroom;
// $B8=:_$NEPO?@8EL?t(B
int student_num;
//$B!!%/%i%9A4BN$NJ?6QE@$rI=<($9$k(B
void print_class_average(classroom* cls, const student st[]);
#endif
classroom.c
void
print_class_average(classroom* cls,const student st[]){
average(cls,st);
printf("$B%/%i%9$NJ?6QE@(B\n");
printf("$B9q8l(B: %f $BE@(B\n",cls->kokugo);
printf("$B?t3X(B: %f $BE@(B\n",cls->suugaku);
printf("$B1Q8l(B: %f $BE@(B\n",cls->eigo);
}
void
average(classroom* cls, const student st[]){
int i;
cls->kokugo = cls->suugaku = cls->eigo = 0;
for(i=0;i<student_num;i++){
cls->kokugo += st[i].kokugo;
cls->suugaku += st[i].suugaku;
cls->eigo += st[i].eigo;
}
cls->kokugo /= student_num;
cls->suugaku /= student_num;
cls->eigo /= student_num;
}
$B%l%]!<%HDs=P$K4X$7$F(B