我是靠谱客的博主 天真洋葱,这篇文章主要介绍成绩排序,现在分享给大家,希望可以做个参考。

题目描述

      科大学生成绩表有学号、数学成绩、英语成绩与程序设计成绩4项。按学号次序给定一个班的成绩,要求根据个人总分高低排序输出同学们的成绩。

输入

      第一行是整数N,表示班级学生人数(N<=40)。

      随后有N行,每一行依次有空格分开的学号、数学成绩、英语成绩与程序设计成绩等4项。学号统一都是10位数字,前四位是1705,而且不会有相同学号。成绩是来自区间[0,100]的整数。

输出

根据总分由高到低进行排序。如果总分相同,则数学成绩高者居前,如果数学成绩也相同,则英语成绩高者居前,若英语成绩相同,则学号按字典序(即strcmp的比较规则)小者居前。

        每一个学生输出学号,三门成绩总分,数学成绩,英语成绩,程序设计成绩五项信息。其中学号宽度占15位,其它各数据项宽度占5位,输出格式类如”%-5d”,见样例。

样例输入 Copy

复制代码
1
2
3
4
5
6
7
8
<span style="background-color:#ffffff"><span style="color:#333333"><span style="color:#333333"><span style="background-color:#f5f5f5">6 1705050201 78 65 95 1705050202 81 85 85 1705050203 95 65 78 1705050204 66 65 67 1705050205 56 67 89 1705050206 65 95 80 </span></span></span></span>

样例输出 Copy

复制代码
1
2
3
4
5
6
<span style="background-color:#ffffff"><span style="color:#333333"><span style="color:#333333"><span style="background-color:#f5f5f5">1705050202 251 81 85 85 1705050206 240 65 95 80 1705050203 238 95 65 78 1705050201 238 78 65 95 1705050205 212 56 67 89 1705050204 198 66 65 67 </span></span></span></span>
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h> #include<string.h> struct student{ /*学生信息结构类型定义*/ char num[10];//要用到strcmp函数所以将学号定义为字符数组 /*学号*/ int computer,english,math; /*三门课程成绩*/ int sum; }; int main(void) { int i,j,n,index=0;//注意要将index的初始值设为0 struct student stu[40],change; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s%d%d%d",stu[i].num,&stu[i].math,&stu[i].english,&stu[i].computer); stu[i].sum=stu[i].computer+stu[i].math+stu[i].english; } for(i=0;i<n-1;i++){//选择排序法,只用进行n-1次 index=i;//index用来储存最大值 for(j=i+1;j<n;j++){ if(stu[j].sum>stu[index].sum){ index=j; } else if(stu[j].sum==stu[index].sum){ if(stu[j].math>stu[index].math){ index=j; } else if(stu[j].math==stu[index].math){ if(stu[j].english>stu[index].english){ index=j; } else if(stu[j].english==stu[index].english){ if(strcmp(stu[j].num,stu[index].num)<0){ index=j; } } } } } change=stu[index]; stu[index]=stu[i]; stu[i]=change; } for(i=0;i<n;i++){ printf("%-15s%-5d%-5d%-5d%-5dn",stu[i].num,stu[i].sum,stu[i].math,stu[i].english,stu[i].computer); } return 0; }

最后

以上就是天真洋葱最近收集整理的关于成绩排序的全部内容,更多相关成绩排序内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部