#include
typedef struct birthday
{
int year;
int month;
int day;
}BIRTH;
typedef struct student
{
long studentID;
char studentName[10];
char studentsex;
struct birthday BIRTH;
int score[4];
}STUDENT;
void InputScore(STUDENT stu[],int n,int m);
void AverScore(STUDENT stu[],float aver[],int n,int m);
void PrintScore(STUDENT stu[],float aver[],int n,int m);
int main()
{
int n;
int m;
float aver[n];
STUDENT stu[n];
printf("有多少学生?");
scanf("%d",&n);
InputScore(stu,n,4);
AverScore(stu,aver,n,4);
PrintScore(stu,aver,n,4);
return 0;
}
void InputScore(STUDENT stu[],int n,int m)
{
int i;
int j;
int k;
for(i=0;i<n;i++)
{
char c;
c=getchar();//建立两个问题之间的缓冲
printf("请输入第%d学生的学号、姓名、性别、出生年月:",i+1);
scanf("ld%\ts%\tc%\t%d/%d/%d",&stu[i].studentID,&stu[i].studentName,&stu[i].studentsex,&stu[i].BIRTH.year,&stu[i].BIRTH.month,&stu[i].BIRTH.day);
/* c=getchar();
for(k=0;k<n;k++)
{
printf("\n请输入第%d学生的出生年月(以空格为界):",k+1);
scanf("%d/%d/%d",&stu[i].BIRTH.year,&stu[i].BIRTH.month,&stu[i].BIRTH.day);
}
c=getchar();*/
for(j=0;j<m;j++)//循环条件改变
{
printf("请输入第%d位同学的成绩:",j+1);
scanf("%d",stu[i].score[j]);
}
}
}
void AverScore(STUDENT stu[],float aver[],int n,int m)
{
int i;
int j;
int sum[i];
for(i=0;i<n;i++)
{
sum[i]=0;
for(j=0;j<m;j++)
{
sum[i]+=stu[i].score[j];
}
aver[i]=(float)sum[i]/m;
}
}
void PrintScore(STUDENT stu[],float aver[],int n,int m)
{
int i;
int j;
printf("%ld\t%s\t%c\t%d/%d/%d",stu[i].studentID,stu[i].studentName,stu[i].studentsex,stu[i].BIRTH.year,stu[i].BIRTH.month,stu[i].BIRTH.day);
for(j=0;j<m;j++)
{
printf("%d",stu[i].score[4]);
}
printf("%.lf\n",aver[i]);
}
https://www.cnblogs.com/java1024/p/11333811.html
PrintScore函数里的i没赋值