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;
}