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.
RLmk/步骤7(未完成).cpp

162 lines
3.0 KiB

#include<stdio.h>
#include<string.h>
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]<g[j+1])
{
p=b[j];
b[j]=b[j+1];
b[j+1]=p;
p=name[j];
name[j]=name[j+1];
name[j+1]=p;
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;
}
}
}
void sortclass(char *b[],char *name[],int f[],float c[],float d[],float e[],float g[],int n)/*班级排序程序*/
{
int i,j;
char a='0';
char *p=&a;
int t=0;
float k=0;
for(i=1;i<=n;i++)/*冒泡*/
for(j=1;j<=n-i;j++)
{
if(f[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;
}
void print(char *b[],char *name[],int f[],float c[],float d[],float e[],float g[],int n,char *sign1)/*输出程序*/
{
int i;
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");
}
}
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;
}
}
print(b,name,f,c,d,e,g,n,sign1);
return 0;
}