You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.6 KiB
83 lines
1.6 KiB
#include <stdio.h>
|
|
#include <string.h>
|
|
typedef struct
|
|
{
|
|
int id;
|
|
int class;
|
|
char name[20];
|
|
float a,b,c;
|
|
float total;
|
|
}Student;
|
|
void sort(Student *person,int len)
|
|
{
|
|
int i;
|
|
int j;
|
|
for(i=0;i<len;i++)
|
|
{
|
|
int k=i;
|
|
for(j=i;j<len;j++)
|
|
{
|
|
if(person[k].class>person[j].class||(person[k].class==person[j].class&&person[k].total<person[j].total))
|
|
{
|
|
k=j;
|
|
}
|
|
if(k!=i)
|
|
{
|
|
Student temp=person[i];
|
|
person[i]=person[k];
|
|
person[k]=temp;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void modify(Student *person,int len,Student modifyperson)
|
|
{
|
|
int i;
|
|
for(i=0;i<len;i++)
|
|
{
|
|
if(person[i].id==modifyperson.id)
|
|
{
|
|
person[i]=modifyperson;
|
|
sort(person,3);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
void print(Student *person,int len,Student modifyperson)
|
|
{
|
|
int classname=0;
|
|
int i;
|
|
for(i=0;i<len;i++)
|
|
{
|
|
if(person[i].class!=classname)
|
|
{
|
|
classname=person[i].class;
|
|
printf("%d ",classname);
|
|
}else{
|
|
printf(" ");
|
|
}
|
|
printf("%d %s %.1f %.1f %.1f",person[i].id,person[i].name,person[i].a,person[i].b,person[i].c);
|
|
if(person[i].id==modifyperson.id)
|
|
{
|
|
printf(" modified");
|
|
}
|
|
printf("\n");
|
|
}
|
|
}
|
|
int main()
|
|
{
|
|
Student students[]=
|
|
{
|
|
{10001,11,"Zhang",99.5,88.5,89.5},
|
|
{10002,12,"Yang",77.9,56.5,87.5},
|
|
{10003,11,"Liang",92.5,99.0,60.5}
|
|
};
|
|
sort(students,3);
|
|
Student modifystudent;
|
|
scanf("%d %d %s %f %f %f",&modifystudent.id,&modifystudent.class,&modifystudent.name,&modifystudent.a,&modifystudent.b,&modifystudent.c);
|
|
sort(students,3);
|
|
modify(students,3,modifystudent);
|
|
print(students,3,modifystudent);
|
|
return 0;
|
|
}
|