我是靠谱客的博主 天真洋葱,最近开发中收集的这篇文章主要介绍成绩排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

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

输入

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

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

输出

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

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

样例输入 Copy

<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

<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>
#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;

}

最后

以上就是天真洋葱为你收集整理的成绩排序的全部内容,希望文章能够帮你解决成绩排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部