PTA 7-6 学生平均成绩排序
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。
注意: 1)平均分出现相同的分数时按学号从小到大进行排序输出。 2)平均分以四舍五入取整数保存。
输入格式: 输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。
输出格式: 输出从高到低排序后的学生信息,包括:学号、姓名、三门课程成绩、平均分(整数) 输入样例:
4 101 Zhang 78 87 85 102 Wang 91 88 90 104 chen 86 90 75 103 Li 75 90 86
输出样例:
102 Wang 91 88 90 90 103 Li 75 90 86 84 104 chen 86 90 75 84 101 Zhang 78 87 85 83
#include<stdio.h> struct student{ int num ,a,b,c;//a,b,c为三门学生成绩,num为学号 char name[10]; double average; }stu[10],temp;//运用结构体 int main(){ int n,i,j; scanf("%d",&n); for(i = 0;i < n;i++){ scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c); stu[i].average = (stu[i].a+stu[i].b+stu[i].c)/3.0; } for(i = 0;i < n;i++){ for(j=0;j<n-i;j++){ if(stu[j].average<stu[j+1].average){ temp = stu[j]; stu[j] = stu[j+1]; stu[j+1] = temp; }else if(stu[j].average==stu[j+1].average){ if (stu[j+1].num<stu[j].num){ temp = stu[j+1]; stu[j+1] = stu[j]; stu[j] = temp; } } } } for(i=0;i<n;i++){ printf("%d %s %d %d %d %.0f ",stu[i].num,stu[i].name,stu[i].a,stu[i].b,stu[i].c,stu[i].average); } return 0; }
下一篇:
找出数组中那个第一次重复的数字