结构体 打印学生成绩

来源:互联网 发布:js 为空等于0简写 编辑:程序博客网 时间:2024/05/01 10:00
#include<stdio.h>
int n;

struct student
{
    char num[10];
    char name[10];
    int grades[3];
    float av;
};
int main()
{
   scanf("%d",&n);
   struct student student1[n],*p=student1 ;
    struct student input(struct student[]);
    void print(struct student student1);

  print(input(p));

}


struct student input (struct student student1[n])
{
    int i,s=0,m=0,j;
    float av;
    for(i=0;i<n;i++)
        scanf("%s%s%d%d%d",student1[i].num,student1[i].name,&student1[i].grades[0],&student1[i].grades[1],&student1[i].grades[2]);
    for(i=0;i<3;i++)
       { s=0;
             for(j=0;j<n;j++)
           s+=student1[j].grades[i];
          av=(float)s/n;
          if(i!=2)printf("%.0f ",av);
            else printf("%.0f",av);
       }
       printf("\n");
       for(i=0;i<n;i++)
       {s=0;
           s+=student1[i].grades[0]+student1[i].grades[1]+student1[i].grades[2];
        student1[i].av=(float)s/3;
       }
       for(i=0;i<n;i++)
       {
           if(student1[i].av>student1[m].av) m=i;
       }
       return student1[m];
}


void print(struct student student1)
{
    int i;
 printf("%s %s %d %d %d",student1.num,student1.name,student1.grades[0],student1.grades[1],student1.grades[2]);
}
0 0