用结构体实现一个简单的学生信息系统


#include <stdio.h>

#define N 30

struct STUDENT

{

       char sname[30];//名字

       char sclass[10];//班级

       char ID[10];//学号

       char sdor[10];//宿舍

       float sscore[4];//4科分数

}stu[N];

void input(struct STUDENT stu[],int n)//输入各种信息

{

       int i;

       for(i=0;i<n;i++)

       {

              scanf("%s %s %s %s",stu[i].sname,stu[i].sclass,stu[i].ID,stu[i].sdor);

              for(int j=0;j<4;j++)

              {

                     if(j!=3||i==n-1)

                     scanf("%f",&stu[i].sscore[j]);

                     else

                     {

                            scanf("%f",&stu[i].sscore[j]);

                            getchar();

                     }

              }

       }

}

void output(struct STUDENT stu[],int n)//输出各种信息

{

       int i;

       for(i=0;i<n;i++)

       {

              printf("%s %s %s %s ",stu[i].sname,stu[i].sclass,stu[i].ID,stu[i].sdor);

              for(int j=0;j<4;j++)

              {

                     if(j!=3)

                     printf("%.2f ",stu[i].sscore[j]);

                     else

                     {

                            printf("%.2f\n",stu[i].sscore[j]);

                     }

              }

       }

}

int max(struct STUDENT stu[],int n)//比较各学生的计算机成绩

{

       int i,t=0;

       for(i=0;i<n;i++)

       {

              if(stu[t].sscore[3]<stu[i].sscore[3])

              {

                     t=i;

              }

       }

       return t;

}

change(float a[],int n)//对总分进行排序

{

       int i,j;

       float t;

       for(i=0;i<n;i++)

       {

              for(j=0;j<n-i-1;j++)

              {

                     if(a[j]<a[j+1])

                     {

                            t=a[j];

                            a[j]=a[j+1];

                            a[j+1]=t;

                     }

              }

       }

}

int main(void)

{

       int n,i,j;

       float a[N]={0};

       input(stu,N);

       output(stu,N);

       n=max(stu,N);

       printf("computer max information:\nname:%s\nclass:%s\nID:%s\ndormatory:%s\nscore:",stu[n].sname,stu[n].sclass,stu[n].ID,stu[n].sdor);

       for(j=0;j<4;j++)

       {

              if(j!=3)

                     printf("%.1f ",stu[n].sscore[j]);

              else

                     printf("%.1f\n",stu[n].sscore[j]);

       }

       for(i=0;i<N;i++)//求各学生总分到数组

       {

              for(j=0;j<4;j++)

              {

                     a[i]+=stu[i].sscore[j];

              }

       }

       change(a,N);

       printf("sum:");

       for(i=0;i<N;i++)

       {

              if(i!=(N-1))

              {

                     printf("%.1f ",a[i]);

              }

              else

              {

                     printf("%.1f\n",a[i]);

              }

       }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM