该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#define s 10
struct man{
char name[20];
int fen[7];
int max;
int min;
int sum;
float pj;
};
void swap(struct man * a,struct man * b){
int i = 0;
struct man* c = (struct man *)malloc(sizeof(struct man));
strncpy(c->name,a->name,19);
for( i = 0;i < 7;i ++){
c->fen[i] = a->fen[i];
}
c->max = a->max;
c->min = a->min;
c->sum = a->sum;
c->pj = a->pj;
strncpy(a->name,b->name,19);
for( i = 0;i < 7;i ++){
a->fen[i] = b->fen[i];
}
a->max = b->max;
a->min = b->min;
a->sum = b->sum;
a->pj = b->pj;
strncpy(b->name,c->name,19);
for( i = 0;i < 7;i ++){
b->fen[i] = c->fen[i];
}
b->max = c->max;
b->min = c->min;
b->sum = c->sum;
b->pj = c->pj;
free(c);
}
void paixu(struct man a[],int n){ //成绩排序
int i = 0,j = 0;
//struct man temp;
for(j=0;j
for(i=0;i
{
if(a[i].pj>a[i+1].pj)//数组元素大小按升序排列
{
//swap(&temp,a+i);
swap(a+i,a+i+1);
//swap(a+i+1,&temp);
}
}
}
int main(){
int i = 0,j = 0;
struct man xs[s];
for(i = 0;i < s;i ++)
xs[i].sum = 0;
printf("请输入10个选手名字:\n");
for(i = 0;i
gets(xs[i].name);
//scanf("%*[^\n]");
//scanf("%*c");
}
for(i = 0;i < s;i ++){
printf("\n请输入 选手%s 的7个得分,中间以空格隔开:\n",xs[i].name);
for(j = 0;j < 7;j ++){
scanf("%d",&(xs[i].fen[j]));
}
xs[i].max = xs[i].fen[0];
for( j = 1;j < 7;j ++)
if(xs[i].max < xs[i].fen[j])
xs[i].max = xs[i].fen[j];
printf("\n该选手得到的最高分为:%d",xs[i].max);
xs[i].min = xs[i].fen[0];
for( j = 1;j < 7;j ++)
if(xs[i].min > xs[i].fen[j])
xs[i].min = xs[i].fen[j];
printf("\n该选手得到的最低分为:%d",xs[i].min);
for(j = 0;j < 7;j ++)
xs[i].sum += xs[i].fen[j];
xs[i].sum = xs[i].sum - xs[i].min-xs[i].max;
xs[i].pj = ((float)(xs[i].sum))/5;
printf("\n去掉最高分和最低分后,选手%s的最终得分为:%.2f\n",xs[i].name,xs[i].pj);
}
paixu(xs,s);
printf("\n比赛结果排名如下:");
for(i = s-1;i >= 0;i --){
printf("\n 第%d名为:%s,分数为:%.2f ",s-i,xs[i].name,xs[i].pj);
}
printf("\n");
return 0;
}