#include #include void sortexam(char *b[],char *name[],int f[],float c[],float d[],float e[],float g[],int h,int n)/*班级内成绩排序*/ { int i,j; int t=0; char a='0'; char *p=&a; float k=0; for(i=h;i<=n;i++)/*冒泡*/ for(j=h;j<=n-i;j++) { if(g[j]f[j+1]) { t=f[j];/*交换*/ f[j]=f[j+1]; f[j+1]=t; p=b[j]; b[j]=b[j+1]; b[j+1]=p; p=name[j]; name[j]=name[j+1]; name[j+1]=p; k=c[j]; c[j]=c[j+1]; c[j+1]=k; k=d[j]; d[j]=d[j+1]; d[j+1]=k; k=e[j]; e[j]=e[j+1]; e[j+1]=k; k=g[j]; g[j]=g[j+1]; g[j+1]=k; } } } int deletename(char *b[],char *name[],int f[],float c[],float d[],float e[],float g[],int n)/*删除程序*/ { int i,j; int k;/*储存长度*/ k=n; char a[1001]; gets(a); for(i=1;i<=n;i++) { if(strcmp(b[i],a)==0||strcmp(name[i],a)==0)/*比较*/ { k--; for(j=i;j<=n;j++) { b[j]=b[j+1]; name[j]=name[j+1]; f[j]=f[j+1]; c[j]=c[j+1]; d[j]=d[j+1]; e[j]=e[j+1]; g[j]=g[j+1]; } } } return k; } char *change(char *b[],char *name[],int f[],float c[],float d[],float e[],float g[],int n)/*修改程序*/ { int i; char *sign1;/*修改程序的标记*/ char a[10001],a1[10001]; int a2; float a4,a5,a6; scanf("%s %d %s %f %f %f",&a,&a2,&a1,&a4,&a5,&a6); for(i=1;i<=n;i++) { if(strcmp(b[i],a)==0) { sign1=b[i]; name[i]=a1; f[i]=a2; c[i]=a4; d[i]=a5; e[i]=a6; g[i]=g[i+1]; } } return sign1; } int main() { char s[1001]; int i; int k; char *sign1; int n=3; char *b[1001]={"0","10001","10002","10003","0"};/*学号*//*学艺不精的痛*/ char *name[1001]={"0","Zhang","Yang","Liang","0"};/*姓名*/ int f[1001]={0,11,12,11};/*班级*/ float c[1001]={0,99.5,77.9,92.5},d[1001]={0,88.5,56.5,99.0},e[1001]={0,89.5,87.5,60.5};/*成绩*/ float g[1001]={0};/*总成绩*/ sign1=change(b,name,f,c,d,e,g,3); for(i=1;i<=3;i++) g[i]=c[i]+d[i]+e[i]; sortclass(b,name,f,c,d,e,g,n); k=1;/*前端*/ for(i=1;i<=n;i++) { if(f[i+1]!=f[k]) { sortexam(b,name,f,c,d,e,g,k,i); k=i+1; } } for(i=1;i<=n;i++)/*输出程序*/ { if(f[i]!=f[i-1]) printf("%d %s %s %.1f %.1f %.1f",f[i],b[i],name[i],c[i],d[i],e[i]); else printf(" %s %s %.1f %.1f %.1f",b[i],name[i],c[i],d[i],e[i]); if(strcmp(b[i],sign1)==0) printf(" modified"); printf("\n"); } return 0; }