入100个学生的学号、姓名、性别(0男1女),数学、语文、英语成绩,然后计算语数外平均分按从高到低的顺序排列后输出。
1 #include<cstdio>
2 #define MAXN 100
3 //学生类型
4 typedef struct student{
5 int id, sex, ch, ma, en;
6 float avg;
7 char name[20];
8 } Stu;
9
10 int main(){
11 Stu s[MAXN], t;//记录所有学生及一个临时变量
12 for(int i = 0;i < MAXN; i++){
13 scanf("%d%s%d%d%d%d", &s[i].id, s[i].name, &s[i].sex, &s[i].ch, &s[i].ma, &s[i].en);
14 s[i].avg = (s[i].ch + s[i].ma + s[i].en) / 3.0;
15 }
16 //从大到小排序
17 for(int i = 0;i < MAXN - 1;i++)
18 for(int j = MAXN - 1;j > i;j--)
19 if(s[j].avg > s[j-1].avg){
20 t = s[j];
21 s[j] = s[j-1];
22 s[j - 1] = t;
23 }
24 for(int i = 0; i < MAXN; i++)
25 printf("%d %s %d %d %d %d %.2lf\n",s[i].id, s[i].name, s[i].sex, s[i].ch, s[i].ma, s[i].en, s[i].avg);
26 }