7-1 学生成绩排序
分数 12
全屏浏览
切换布局
作者 张泳
单位 浙大城市学院
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。
输入格式:
输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。
输出格式:
输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。
输入样例:
1. 3 2. 101 Zhang 78 87 85 3. 102 Wang 91 88 90 4. 103 Li 75 90 84
输出样例:
1. 102,Wang,89.67 2. 101,Zhang,83.33 3. 103,Li,83.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h> #include <string.h> struct node { int id; int f1; int f2; int f3; double f; char name[50]; }a[50],t; int main() { int n,i,j; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d %s %d %d %d",&a[i].id,a[i].name,&a[i].f1,&a[i].f2,&a[i].f3); double sum=0; sum+=a[i].f1+a[i].f2+a[i].f3; a[i].f=sum/3.0; } for(i=0;i<n-1;i++) {for(j=0;j<n-1-i;j++) { if(a[j].f<a[j+1].f) { t=a[j]; a[j]=a[j+1];//max a[j+1]=t; } } } for(i=0;i<n;i++) { printf("%d,%s,%.2f\n",a[i].id,a[i].name,a[i].f); } return 0; }