精华内容
下载资源
问答
  • 2020-11-29 10:30:23

    刚接触程序语言的时候,经常会用到一些排序的问题,按照算法运行效率和理解上面来看的话,有的时候我们可以记录一些比较便于理解的;

    1:如果一个班有5个同学考试成绩如下,需要我们通过程序的方式来对成绩从高到低来排序,学生成绩如下:

    88,52,67,93,87(各个同学的成绩不相等)

    方法一:

    list = [88,52,67,93,87] #将这5个学生的成绩存入列表或者数组

    rank = [1,1,1,1,1] #新设置一个列表(数组)用于存放list列表中各个元素的排位情况(长度需要跟list一致),这个地方之所以把每个元素设置为1,程序中可以理解

    new=[0,0,0,0,0] #定义一个新的列表(数组),用于存放排序后的成绩

    for j in range(0,5): #此处用python的语法,用C语言可以是 for(j=0,j<5,j++),此循环设置的目的是用于遍历list列表(数组)

    sm = list[j] #将列表(数组)中第一个值赋值给 sm,暂存list元素的值,用于设定后面的值来跟本值的比较,从list第一个元素(88)开始---87结束

    for m in list: #再设定一个循环来提取list的每个元素与刚才暂存的sm来比较

    if m > sm:

    rank[j]=rank[j]+1 #此处是比较关键的,当后面提取出来list元素的值比暂存的sm的值大的时候,rank[j]对应的值就加1;这里要说明一下,比如提取的是“93”,因为93比

    #88的值要大,所以按照排序的位置,93就要排到88的前面,如果93排的是“1”号位置,那么88通过本次比较就往后移动1位;因本来我们设定的rank里  #面各元素的值都是1,于是当我们把里面的值“+1”的次数统计出来后,自然就记录好了这个数在整个数列中应该排的位置。

    print(rank) #于是得出的rank的结果是:[2,5,4,1,3] ,证明,list中的各个数据对应的排序位置应该是2,5,4,1,3

    for n in range(0,5): #再次设置一个5次循环,用于遍历list

    new[rank[n]-1]=list[n] #分别把list当前的值替换新列表中排位中的数据,比如88应该排第二位,那就替换新列表中2号位置的数据,new[1](rank[n]-1 列表和数组位置从0开始 #的,所以此处记得“-1”)

    print(new) #执行后结果:[93, 88, 87, 67, 52]

    分析:如果按照冒泡排序的方式,就是每次比较2个数字,譬如A,B,C,D,E,步骤:1,A与B比较,如果A大 2,拿A去跟C比较,如果A比C大 3,A跟D比较,如果A比D大。4,A与E比较。那么问题来了,A是比较出来了,是最大的,关键是B,C,D,E之间还得重新比较一下又要重新交换位置,尤其是数据多了以后,程序就不太便于理解;而设置一个跟原数组同长度的数组后,就便于理解和记录每个元素应该排放的位置了;当然这是个例子,本题数据是不相同的,那么数据相同了的话,要做多两层判断了,留下供思考;

    方法二:因python中有自带的一些实用的函数,处理起来就非常的简便了

    list2=[93, 88, 87, 67, 52]

    list2.sort(reverse=True)

    print(list2) #此时不管里面是否有相同分数的,都可以正常排序出来(只是我们没有研究sort内部的算法)

    更多相关内容
  • 学生成绩冒号排序,实例练习。
  • JAVA 输入学生成绩后总成绩排序输出,添加异常输入处理。
  • 课程设计:学生成绩排序统计系统学生成绩数据排序小程序 课程设计:学生成绩排序统计系统学生成绩数据排序小程序
  • 实现学生成绩管理系统程序前的练习,输入学生名字、学号、和成绩,计算每个学生的平均分,总分,按总分从小到大排序,学号、名字、成绩也跟随总分排序


    #include <stdio.h>
    #include <string.h>
    #define M 3
    #define N 4
    int main()
    {
        char num[M][20]={"101","102","103"},name[M][20]={"aaa","bbb","ccc"};
        float score[M][N]={65,75,85,95,55,66,77,88,60,70,80,90};
        float c[4];//交换成绩时作为中间变量
        int i,j,k;
        char str1[20];
        float sum[M]={0},temp;//temp在判断总分大小中使用
        float max[N],min[N];//四门课程中的最高分、最低分
        
        for(i=0;i<3;i++)
        {
            for(j=0;j<4;j++)
            {
                sum[i]+=score[i][j];//计算每个学生的总分
            }
         } 

        for(j=0;j<N;j++)//得到每门课程的最高分、最低分
        {
            max[j]=score[0][j];//每列的最高分
            min[j]=score[0][j];//每列的最低分
            for(i=0;i<M;i++)    
                {
                if(score[i][j]>max[j])
                    max[j]=score[i][j];
                if(score[i][j]<min[j])
                    min[j]=score[i][j];
                }
        }
        
    for(i=0;i<M-1;i++)          //i:0、1            //按总分排序,从小到大
        {
            for(k=i+1;k<M;k++)//k:1、2
            {
                if(sum[k]<sum[i])
                {
                    temp=sum[i];                //按总分排序,换总分
                    sum[i]=sum[k];
                    sum[k]=temp;

                    strcpy(str1, num[i]);        //换学号
                    strcpy(num[i], num[k]);
                    strcpy(num[k], str1);

                    strcpy(str1, name[i]);        //换名字
                    strcpy(name[i],name[k]);
                    strcpy(name[k], str1);

                    //strcpy(str2,(score[i]));        //换成绩
                    //strcpy((score[i]),(score[j]));
                    //strcpy((score[j]), str2);
                    
                    for(j=0;j<N;j++)
                    {
                        c[j] = score[i][j];//例如当i=0时,就是先将第一个同学四门课成绩赋值给一维数组c
                        score[i][j] = score[k][j];
                        score[k][j] = c[j];
                    }
                }
            }
        }

        printf("所有学生的信息为:\n");
        for (i=0;i<M;i++)
        {
            printf("%10s",num[i]);//输出学号
            printf("%10s",name[i]);//输出名字
            
            for (j=0;j<N;j++)
              {
               printf("%5.1f ",score[i][j]);//输出四门课的成绩
            //printf("%5.1f ",float(score[i][j]));//输出四门课的成绩
              }
            printf("%.1f ",sum[i]);//输出每个学生成绩的总分
              printf("%.2f",sum[i]/N);//输出每个学生成绩的平均分
            printf("\n");
        }

        printf("\t最高分        ");
        for(j=0;j<N;j++)
            printf("%.1f ",max[j]);
        putchar('\n');
            printf("\t最低分        ");
        for(j=0;j<N;j++)
            printf("%.1f ",min[j]);
        putchar('\n');
        return 0;
    }

    展开全文
  • 学生成绩管理C++。按照各单科成绩排序总分排序
  • C++用类对学生成绩排序

    千次阅读 2021-12-07 09:34:51
    #include <iostream> #include <iomanip> using namespace std; class Student { public: Student(string a, int b, int c, int d) { name = a; id = b; score = c; score_c = d;... a...

    #include <iostream>
    #include <iomanip>
    using namespace std;
    class Student {
    public:
        Student(string a, int b, int c, int d) {
            name = a;
            id = b;
            score = c;
            score_c = d;
        }
        Student(const Student& a) {
            name = a.name;
            id = a.id;
            score = a.score;
            score_c = a.score_c;
        }
        string name;
        int id, score_c, score;
    
        void Disp() {
        cout << setw(10) << name << setw(10) << id <<setw(10) << score << setw(10) << score_c << endl;
        }
    
    private:
    
    };
    void SortStud(Student stud[], int n) {
        int i, j;
        Student t("张三", 2019001, 60, 78);
        for (j = 0; j < n-1; j++) {
            for (i = 0; i < n-1-j; i++) {
                if (stud[i].score < stud[i + 1].score) {
                    t = stud[i+1];
                    stud[i+1] = stud[i];
                    stud[i] = t;
                }
            }
        }
    }
    
    int main() {
        Student stud[5] = { Student("张三", 2019001, 60, 78),
                            Student("李四", 2019002, 89, 76),
                            Student("王五", 2019003, 67, 99),
                            Student("赵亮", 2019004, 89, 90),
                            Student("高浩", 2019005, 100, 80)
        };
        cout << "排序前" << endl;
        cout <<setw(10)<< "姓名" << setw(10) << "学号" << setw(10) << "数学成绩" << setw(10) << "C++成绩" << endl;
        cout << "-------------------------------------------" << endl;
        int i;
        for (i = 0; i < 5; i++)
            stud[i].Disp();
        SortStud(stud, 5); //排序
        cout << endl << "排序后" << endl;
        cout << setw(10) << "姓名" << setw(10) << "学号" << setw(10) << "数学成绩" << setw(10) << "C++成绩" << endl;
        cout << "-------------------------------------------" << endl;
        for (i = 0; i < 5; i++)
            stud[i].Disp();
        return 0;
    }

     

    展开全文
  • 用java编一个学生成绩排序成绩 有学生的姓名 学号 三门课的成绩 然后对总分排序import java.util.*;public class student{class Node{public String name ;public String ID;public int java ;public int os;public ...

    用java编一个学生成绩排序成绩 有学生的姓名 学号 三门课的成绩 然后对总分排序

    import java.util.*;

    public class student

    {

    class Node

    {

    public String name ;

    public String ID;

    public int java ;

    public int os;

    public int PE;

    public int total;

    }

    public  Node data;

    public student next;

    public student creat()

    {

    student head,p,r,s1;

    int x1,x2,x3,x4;

    String n,i;

    head=r=null;

    System.out.print("请输入学生的姓名  学号   java成绩    os成绩     Internet 成绩");

    System.out.print("请输入一个x整形数据以0结束:");

    Scanner c= new Scanner(System.in);

    n=c.nextLine();

    Scanner c0= new Scanner(System.in);

    i=c0.nextLine();

    Scanner c1= new Scanner(System.in);

    x1=c1.nextInt();

    Scanner c2= new Scanner(System.in);

    x2=c2.nextInt();

    Scanner c3= new Scanner(System.in);

    x3=c3.nextInt();

    while (x1!=0)

    {

    student s11=new student();

    s11.data.name=n;

    s11.data.ID=i;

    s11.data.java=x1;

    s11.data.os=x2;

    s11.data.PE=x3;

    s11.data.total=s11.data.java+s11.data.os+s11.data.PE;

    if(head==null)

    head=s11;

    else

    r.next=s11;

    r=s11;

    Scanner b= new Scanner(System.in);

    n=b.nextLine();

    Scanner b0= new Scanner(System.in);

    i=b0.nextLine();

    Scanner b1= new Scanner(System.in);

    x1=b1.nextInt();

    Scanner b2= new Scanner(System.in);

    x2=b2.nextInt();

    Scanner b3= new Scanner(System.in);

    x3=b3.nextInt();

    }

    if(r!=null)

    r.next=null;

    return head;

    }

    public void out(student head)

    {

    student p;

    p=head;

    System.out.print("List is:");

    while(p!=null)

    {

    System.out.println("\t"+p.data.name+"\t"+p.data.ID+"\t"+p.data.java+"\t"+p.data.os+"\t"+p.data.PE+"\t"+p.data.total);

    p=p.next;

    }

    }

    public student sortup(student head)

    {

    student p=head,pre=null,s=null,q=null;

    head.next=null;

    while(p!=null)

    {

    s=p;

    p=p.next;

    pre=head;

    q=head.next;

    while(q!=null && q.data.total

    {

    pre=q;

    q=q.next;

    }

    s.next=q;

    pre.next=s;

    }

    return head;

    }

    public student sortdown(student head)

    {

    student p=head,pre=null,s=null,q=null;

    head.next=null;

    while(p!=null)

    {

    s=p;

    p=p.next;

    pre=head;

    q=head.next;

    while(q!=null && q.data.total

    {

    pre=q;

    q=q.next;

    }

    s.next=q;

    pre.next=s;

    }

    return head;

    }

    public static void main(String[] args) {

    student x,y;

    student a=new student();

    x=a.creat();

    a.out(x);

    a.sortdown(x);

    a.out(x);

    a.sortup(x);

    a.out(x);

    }

    }

    我是一个java初学者  我们老师布置了一个实验  用java编一个学生成绩管理的一个小程序 (学生人数为10人)

    要求:输入姓名  学号  三门课的成绩  计算总成绩  然后对这10个学生的总成绩排序  我编了一个但是行不通 我是按c语言  链表的思想来用java做的  不知道那出了问题  求各位大侠不胜赐教  帮我把它该对  谢谢 !小女子不胜感激  !!!  4.30之前就要交 希望大侠们.。。。----------------解决方案--------------------------------------------------------

    程序代码:

    /**定义一个学生的实体类*/

    public class Student {

    private String name;

    private String ID;

    private int java = 0;

    private int os = 0;

    private int PE = 0;

    private int total = 0;

    public Student() {

    }

    public Student(String name,String ID,int java, int os, int PE) {

    this.name = name;

    this.ID = ID;

    this.java = java;

    this.os = os;

    this.PE = PE;

    this.total = java + os + PE;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public String getID() {

    return ID;

    }

    public void setID(String iD) {

    ID = iD;

    }

    public int getJava() {

    return java;

    }

    public void setJava(int java) {

    this.java = java;

    }

    public int getOs() {

    return os;

    }

    public void setOs(int os) {

    this.os = os;

    }

    public int getPE() {

    return PE;

    }

    public void setPE(int pE) {

    PE = pE;

    }

    public int getTotal() {

    return total;

    }

    public void setTotal(int total) {

    this.total = total;

    }

    public void out(){

    System.out.println("\t"+this.getJava()+"\t"+this.getOs()+"\t"+this.getPE()+"\t"+this.getTotal());

    }

    }

    ---  下面是 运行方法 ----

    public static void main(String[] args) {

    /**ArrayList需要通过collections类的sort方法来进行排序

    如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法

    调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数**/

    Comparator comparator = new Comparator() {

    public int compare(Student s1, Student s2) {

    return s2.getTotal()-s1.getTotal() ;

    //s2.getTotal()-s1.getTotal()倒序//s1.getTotal()-s2.getTotal()顺序

    }

    };

    ArrayList list = new ArrayList();

    for (int i = 0; i <= 2; i++) {

    Scanner scan = new Scanner(System.in);

    System.out.println("请输入学生的姓名  学号   java成绩    os成绩     Internet 成绩");

    Student s = new Student(scan.next(),scan.next(),scan.nextInt(), scan.nextInt(),

    scan.nextInt());

    list.add(s);

    }

    Collections.sort(list,comparator);

    for (Student stu : list) {

    stu.out();

    }

    }

    ----------------解决方案--------------------------------------------------------

    谢谢

    ----------------解决方案--------------------------------------------------------

    非常感谢你给我的解答  有些地方我看不怎么懂  再次向你请教

    为什么每一个Student的类的每一个属性都有   return xx  ,this.xx=xx 呢?是什么含义

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    ----------------解决方案--------------------------------------------------------

    这个是实体类属性的set和get方法!设置值用set获取值用get。

    ----------------解决方案--------------------------------------------------------

    我定义的属性是private

    只能提供一个外部的获取方法才能 获取和修改

    ----------------解决方案--------------------------------------------------------

    楼上的小程序写的合理,就是此程序不需要它的set get方法,没有涉及到实体注入,同时建议初学者将实体类和主方法分开写,逐渐培养良好的封装思想

    ----------------解决方案--------------------------------------------------------

    ----------------解决方案--------------------------------------------------------

    厉害,没想到用这个

    Comparator comparator = new Comparator() {

    public int compare(Student s1, Student s2) {

    return s2.getTotal()-s1.getTotal() ;

    //s2.getTotal()-s1.getTotal()倒序 //s1.getTotal()-s2.getTotal()顺序

    }

    };

    ----------------解决方案--------------------------------------------------------

    展开全文
  • //如何实现这对象数组排序import java.util.Arrays;public class SortTotalScore{public static void main(String args[]){Student[] st = new Student[10];st[0] = new Student("三年二班", "老大",93,84,54,45,89,...
  • 在写学生成绩分析时,会给学生一个排名,但一般成绩录入时,都是无序的,如果我们用链表存储信息,那么构造的数据结构中肯定还有其他的信息,如姓名,学号等,所以我们得根据成绩进行链表节点的交换。 1. 从文件中...
  • 需求:键盘录入3个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台。 * 步骤: * a: 自定义一个学生类 * b: 创建一个TreeSet集合对象(使用比较器进行排序) * c: 键盘录入学生的...
  • 主要介绍了通过c++的sort函数实现成绩排序,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 在一个文本文件中存放着学生的各科成绩,现在需要计算各门课的成绩总分,并进行排序。这个应该怎么做呢?让我们试着编写这样的一个小程序。工具/原料python3.7方法/步骤1第一步,读入文件。由于这个文件并不大,我们...
  • 当然我也看到或听说过其他学校的学生成绩统计分数排名表。它是对学生成绩进行升序或降序的排列表。这在excel中是比较简单的。这种排序表的好处是前几名"优生"和后几名"差生"一目了然。真正起到了"鼓励"和"鞭策"的...
  • C++学生类和成绩排序

    万次阅读 多人点赞 2019-05-28 20:31:37
    程序最终输出界面是三个部分,1、录入学生成绩,2、查找学生成绩,3、显示全部学生成绩;首先定义一个学生类,将所有的成员信息放入私有数据,再构造函数默认赋值。处理对象,写出所需要的录入学生成绩信息,姓名、...
  • C语言学生成绩统计程序(排序版)

    万次阅读 多人点赞 2019-12-11 14:29:12
    printf("\t* 输入学生成绩-------------1 *\n"); printf("\t* 求学生总分并输出---------2 *\n"); printf("\t* 将学生总成绩排序并输出---3 *\n"); printf("\t* 退出系统-----------------0 *\n"); printf...
  • 设计程序实现统计一个班的学生成绩(学生的人数可以设置3000、5000、8000、10000等测试数据),要求自行设计至少两种排序算法,实现如下四个功能;记录每种算法的耗时,结合数据结构的知识对两种算法的时间复杂度...
  • 学生成绩管理系统

    2018-10-11 13:07:34
    题目: 学生成绩管理系统 1 功能描述 设某班有n位同学,每位同学的数据包括以下内容:学号(字符串)、姓名(字符串)、数学成绩(整型)、程序设计成绩(整型)。设计程序完成以下五项功能:新建数据档案、添加数据...
  • /*排序学生记录*/ case 8:Save(l);break; /*保存学生记录*/ case 9:system("cls");Disp(l);break; /*显示学生记录*/ default: Wrong();getchar();break; /*按键有误,必须为数值0-9*/ }等等~~~~~~~~~~~ 以上...
  • cpp: 学生成绩排序,计算平均分

    千次阅读 2017-11-26 13:16:42
    下面是一个简单是统计几个学生成绩的小案例。如果使用 java这样的纯面向对象的语言,非常简单;如果使用c就比较麻烦了,需要去处理字符串,结构这些东西;如果是c++呢?相对来说,还是比较简单。当然,这是一个简单...
  • 已结贴√问题点数:50回复次数:8 用java编一个学生成绩排序成绩 有学生的姓名 学号 三门课的成绩 然后对总分排序import java.util.*;public class student{class Node{public String name ;public String ID;public...
  • 学生成绩排序

    千次阅读 2019-10-29 14:42:47
    某班有不超过200名的学生,从文件中输入某班学生成绩,对输入成绩按由高到低进行排序,并输出到另一个文件中。
  • package day; import java.util.Scanner; public class student { public static void main(String[] args) { ... System.out.println("请输入学生的人数"); int arr=s.nextInt(); int sum=0; int []ar.
  • 学生成绩排序与平均分计算利用c语言链表创建插入删除#include#include#define NULL 0#define LEN sizeof(struct student)struct student{long num;float score;struct student *next;};int n;struct student *creat...
  • 学生成绩排序——选择法排序

    千次阅读 2021-12-04 19:04:01
    将N个学生成绩从高到底排序 分析: (1)从N个数的序列中选出最大的数,与第1个数交换位置; (2)除第1个数外,其余N-1个数再按(1)的方法选出次大的数,与第2个数交换位置; (3)重复_上述过程共N-1遍,最后构成递减序列 ...
  • JAVA有关学生成绩排序的问题

    千次阅读 2021-02-26 10:45:45
    题目要求:定义一个Student数组,其中保存学生的基本信息,包括姓名、学号、性别,还分别保存三门功课的成绩以及对应学分,试编程计算这三门课的学分积,并按学分积降幂排序,输出排序...题目要求:定义一个Student...
  • 满意答案 zhongxuehua ... printf("排序十个学生的总成绩为:"); for(i=0;i;i++) { for(j=i+1;j;j++) { if(b[i] { c=b[i]; b[i]=b[j]; b[j]=c; } } } for(i=0;i;i++) printf("%8.2f\n",b[i]); return 0; } 00分享举报
  • java编写的学生成绩管理系统,GUI界面,实现了增删改查、保存和根据总分排序,根据某个科目排序的功能,详情请看我的博客 https://blog.csdn.net/qq_52889967/article/details/118581246
  • 选题3学生成绩管理一、设计要求由于同学们已经学习了指针、链表、文件读写等基本知识,为了与后续课程, 如数据结构、数据库系统等有一个知识体系上的衔接,特设置一个信息管理类的课题《成绩管理系统》, 其它诸如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,249
精华内容 7,699
关键字:

学生成绩总分排序

友情链接: ListViewikkkkkk.rar