1.输入学号、姓名、数学和英语成绩,

1.输入学号、姓名、数学和英语成绩,直到输入学号为0结束。
2.统计所有学生的平均成绩,并输出学生成绩表。
3.插入一个新的学生记录,并将其插入到指定的结点位置。
4.输入一个学生的学号,在成绩表中查找与输入学号相同的学生结点,若存在该学生记录,则输出其所有信息,否则输出“不存在此学号的学生”信息。
5.输入一个学生的学号,在成绩表中查找与输入学号相同的学生结点,若存在该学生记录,将其删除,否则输出“该学生不存在”信息。
6.将学生成绩按平均成绩从高到低进行排序,并输出排序结果。

定义一个学生类,然后定义成数组,输入信息进行排序查询即可

typedef struct _STUDENT
{
  int id;
  char name[20];
  float maths;
  float eng;
  float avg;
}student;

student stu[100];
int n = 0;
void input()
{
  while(1)
  {
     printf("请输入新学生学号:");
     scanf("%d",&stu[n].id);
     if(stu[n].id == 0)
      break;
     printf("请输入新学生姓名:");
     scanf("%s",stu[n].name);
     printf("请输入新学生数学和英语成绩:");
     scanf("%f%f",&stu[n].maths,&stu[n].eng);
     stu[n].avg = (stu[n].maths+stu[n].eng)/2;
     n++;
  }
}

void getavg()
{
  float total = 0;
  for(int i=0;i<n;i++)
  {
    total += stu[i].avg;
  }
  printf("平均成绩为:%.1f\n",total/n);
}

void findstu()
{
  printf("请输入检索的学号:");
  int id,i;
  scanf("%d",&id);
  for(i=0;i<n;i++)
  {
    if(stu[i].id == id)
    {
      printf("学号:%d\n",stu[i].id);
      printf("姓名:%s\n",stu[i],name);
      printf("数学成绩:%g\n",stu[i].maths);
      printf("英语成绩:%g\n",stu[i].eng);
      return;
    }
  }
  printf("不存在此学号的学生。\n");  
}

void insertstu()
{
  printf("请收入插入学生信息:");
  student s;
  scanf("%d %s %f %f",&s.id,s.name,&s.maths,&s.eng);
  s.avg = (s.maths+s.eng)/2;
  printf("请输入插入位置:");
  int pos;
  scanf("%d",&pos);
  if(pos >= n)
  {
    stu[n].id = s.id;
    stu[n].maths = s.maths;
    stu[n].eng = s.eng;
    stu[n].avg = s.avg;
    strcpy(stu[n].name,s.name);
  }
  else
  {
    for(int k = n;k>pos;k--)
      stu[k] = stu[k-1];
    stu[pos].id = s.id;
    stu[pos].maths = s.maths;
    stu[pos].eng = s.eng;
    stu[pos].avg = s.avg;
    strcpy(stu[pos].name,s.name);
  }
  n++;
}

void delstu()
{
  printf("请输入删除的学号:");
  int id,i;
  scanf("%d",&id);
  for(i=0;i<n;i++)
  {
    if(stu[i].id == id)
    {
      for(int k=i;k<n-1;k++)
        stu[k] = stu[k+1];
      n--;
      return;
    }
  }
  printf("不存在此学号的学生。\n");  
}

void sort()
{
  int i,j,student s;
  for(int i=0;i<n-1;i++)
    for(j=0;j<n-i-1;j++)
    {
      if(a[j] < a[j+1])
      {
        s = a[j];
        a[j] = a[j+1];
        a[j+1] = s;
      }
    }
}

void output()
{
  printf("%10s%20s%10s%10s\n","学号","姓名","数学成绩","英语成绩");
  for(int i=0;i<n;i++)
    printf("%10d%20s%10.1f%10.1f\n",stu[i].id,stu[i].name,stu[i].maths,stu[i].eng);
}

int main()
{
  input();
  getavg();
  insertstu();
  findstu();
  delstu();
  sortstu();
  output();
  return 0;
}