![]() |
#2
fulltimelink2020-05-10 08:23
|
3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84
输出样例:在这里给出相应的输出。例如:
102 Wang 89.67
101 Zhang 83.33
103 Li 83.00
代码:
#include "stdio.h"
struct Student
{
int num;
char name[20];
int score[3];
float aver;
};
struct Student stud[50];//定义结构体数组
void average (struct Student stud[],int n)
{
int i,j,c[20];
float sum=0;
for(i=0;i<n;i++)
{
scanf("%d%s",&stud[i].num,stud[i].name);
for(j=0;j<3;j++)
scanf("%d",&stud[i].score[j]);
sum=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];
stud[i].aver=sum/3;
}
}
void sort(struct Student stud[],int n)//定义函数的括号内用结构体变量,不能用成员名
{
struct Student temp;//定义中间变量,使排序后的成绩所在的变量(包含姓名,学号)整体,在交换位置时全部交换
int i,j,k;
average(stud,n);
for(i=0;i<n-1;i++)//冒泡法
{
for(j=0;j<n-i-1;j++)
k=j+1;
if(stud[j].aver<stud[k].aver)
k=j;
if(k!=i)//将排序后的成绩所在的变量(包含姓名,学号)整体,进行全部交换
{
temp=stud[k];
stud[k]=stud[i];
stud[i]=temp;
}
}
}
int main()
{
int n,i;
scanf("%d",&n);
sort(stud,n);
for(i=0;i<n;i++)
{
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].aver);
}
return 0;
}
只有本站会员才能查看附件,请 登录