精华内容
下载资源
问答
  • 这个SortTotalScore类的功能是:对于一组学生班级,姓名,各科成绩组成的记录列表,统计出每个学生的总分,并且按照总分由高到低的顺序显示出学生所有信息。思路:建立一个Student类数据组成的一维数组。要对该...

    这个SortTotalScore类的功能是:对于一组由学生班级,姓名,各科成绩组成的记录列表,统计出每个学生的总分,并且按照总分由高到低的顺序显示出学生所有信息。

    思路:建立一个由Student类数据组成的一维数组。要对该数组对象的元素进行排序,利用了Arrays类的sort()方法.由于是对象数组,所以Student类必须实现Comparable接口,并且重写compareTO()方法,否则会抛出异常。

    展开全文
  • 输入n个学生的学号、姓名、数学成绩、语文成绩和英语成绩,求出每位学生的三门课程的总分,然后按总分由高到低排序,并将排序结果按学号、姓名、数学成绩、语文成绩、英语成绩、总分和名次打印输出屏幕和文件 ...

    Question:
    输入n个学生的学号、姓名、数学成绩、语文成绩和英语成绩,求出每位学生的三门课程的总分,然后按总分由高到低排序,并将排序结果按学号、姓名、数学成绩、语文成绩、英语成绩、总分和名次打印输出到屏幕和文件 student.dat中。要求用结构体描述学生信息,输出打印时每位学生信息占一行且上下列对齐,总分相同时名次相同,例如,假设有四个成绩为280、275、275、250,则对应的名次为1、2、2、4。

    Code:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    struct student
    {
    	int id;			// 学号 
    	char name[20];	// 姓名 
    	int math;		// 数学成绩 
    	int chinese;	// 语文成绩 
    	int English;	// 英语成绩 
    }a[5];
    
    
    // 输入学生的相关信息 
    void input(){
    	for(int i=0; i<4; i++){
    	scanf("%d %s %d %d %d", &a[i].id, a[i].name, &a[i].math, &a[i].chinese, &a[i].English);
    	}
    }
    
    
    // 对学生的成绩进行排排名 
    void sort(){
    	for(int i=0; i<4; i++){
    		for(int j=i; j<4; j++){
    			if((a[i].math+a[i].chinese+a[i].English) < (a[j].math+a[j].chinese+a[j].English)){
    				a[5].id=a[j].id; strcpy(a[5].name, a[j].name); a[5].math=a[j].math; a[5].chinese=a[j].chinese; a[5].English=a[j].English;
    				a[j].id=a[i].id; strcpy(a[j].name, a[i].name); a[j].math=a[i].math; a[j].chinese=a[i].chinese; a[j].English=a[i].English;
    				a[i].id=a[5].id; strcpy(a[i].name, a[5].name); a[i].math=a[5].math; a[i].chinese=a[5].chinese; a[i].English=a[5].English;
    			}
    		}
    	} 
    }
    
    
    // 将程序进行输入并写入到文件中
    int print(){
    	int rank;	// 排名 
    	FILE *fp;	// 定义文件指针 
    	fp = fopen("student.dat", "w");		// 将文件指针指向文件 
    	
    	// 判断磁盘中的文件是否存在 
    	if(fp == NULL)
       	{
        	printf("磁盘中文件不存在!");
    		exit(0);
       	}
       	fprintf(fp, "学号: %d 姓名: %s 数学成绩: %d 语文成绩: %d 英语成绩: %d 总分: %d 名次: 1\n", a[0].id, a[0].name, a[0].math, a[0].chinese, a[0].English, a[0].math+a[0].chinese+a[0].English);
       	
    	for(int i=1; i<4; i++){
    		rank=i+1;
    		if((a[i].math+a[i].chinese+a[i].English) == (a[i-1].math+a[i-1].chinese+a[i-1].English)){
    			rank=i; 
    		}
    		fprintf(fp, "学号: %d 姓名: %s 数学成绩: %d 语文成绩: %d 英语成绩: %d 总分: %d 名次: %d\n", a[i].id, a[i].name, a[i].math, a[i].chinese, a[i].English, a[i].math+a[i].chinese+a[i].English, rank);	
    	}
       	fclose(fp);
    	
    	
    	printf("\n\n");
    	printf("学号: %d 姓名: %s 数学成绩: %d 语文成绩: %d 英语成绩: %d 总分: %d 名次: 1\n", a[0].id, a[0].name, a[0].math, a[0].chinese, a[0].English, a[0].math+a[0].chinese+a[0].English);
    	for(int i=1; i<4; i++){
    		rank=i+1;
    		if((a[i].math+a[i].chinese+a[i].English) == (a[i-1].math+a[i-1].chinese+a[i-1].English)){
    			rank=i; 
    		}
    		printf("学号: %d 姓名: %s 数学成绩: %d 语文成绩: %d 英语成绩: %d 总分: %d 名次: %d\n", a[i].id, a[i].name, a[i].math, a[i].chinese, a[i].English, a[i].math+a[i].chinese+a[i].English, rank);	
    	}
    } 
    
    
    int main(){
    	int i, j;			// 两个for循环用到的i, j, 定义的排名变量rank
    	
    	printf("请输入学生的相关信息:\n");
    	input();	// 信息输入 
    	sort();		// 成绩排名 
    	print();	// 将成绩信息打印到屏幕和文件
    	return 0;
    }
    
    

    测试数据:

    100 张三 99 98 97
    101 李四 89 88 87
    102 王五 79 78 77
    103 赵六 99 98 97
    

    Result:
    在这里插入图片描述
    在这里插入图片描述
    Get:

    1、c语言的写入文件的方式(定义指针-> 指向文件 -> 判断文件存在 -> fprintf)
    2、熟悉结构体定义以及调用的方式(scanf输入用地址,否则用实体)

    展开全文
  • 编写一个程序,输入3个学生的英语和计算机成绩,并按总分高到低排序(要求设计一个学生类Student)。 问题描述 本题要求我们先分别输入三位学生的英语成绩和计算机成绩,然后再分别计算三位同学的总分,最后再给三...

    题目

    编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)。

    问题描述

    本题要求我们先分别输入三位学生的英语成绩和计算机成绩,然后再分别计算三位同学的总分,最后再给三位同学的总分按高低顺序排序。

    问题分析

    对于本题我们首先要设计一个学生类Student,接着需要我们分别输入三位同学的各科成绩,则可以用数组来储存每位学生的成绩,除此之外,我们还需编写一个函数用来排序,把学生的总分按高低顺序排序后,输出这三位同学的总分。

    设计思想:

    对于本题,首先要设计一个学生类Student,英语成绩e和计算机成绩c作为该类的私有成员,接着,我定义了一个函数bubble,其中套用了两个for循环并运用了值传递等方法从而完成数据的大小排列。在主函数中,用数组来储存学生的成绩,经过计算,最后按学生成绩总分的高低顺序输出。

    设计表示

    在这里插入图片描述

    源代码

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    class Student{                              //定义一个学生类Student
    public:
    	Student(int English=0, int Computer=0)
    	{
    		e = English;
    		c = Computer;
    	}
    	Student(Student&S);
    	int getE(){ return e; }
    	int getC(){ return c; }
    
    private:
    	int e, c;
    
    };
    
    Student::Student(Student&S)
    {
    	e = S.e;
    	c = S.c;
    }
    
    void bubble(int *a, int n)                 //把学生成绩从高到低排序
    {
    	int i, j, temp;
    	for (i = 0; i < n - 1; i++)
    	{
    		for (j = i + 1; j < n; j++)
    		{
    			if (a[i] < a[j])              
    			{
    				temp = a[i];                    //用值传递的方法进行排序
    				a[i] = a[j];
    				a[j] = temp;
    			}
    		}
    	}
    	cout << "这三位同学的总分从高至低排序为:";
    	for (i = 0; i < n; i++)
    	{
    		cout <<a[i] << " ";
    	}
    	cout << endl;
    }
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int e[3];
    	int c[3];
    	int t[3];
    
    	Student thee(e[3]);
    	Student thec(c[3]);
    	int i, j, k;
    	
    	cout << "请分别输入三位同学的英语成绩:";
    	for (int i = 0; i < 3; i++)
    	{
    		cin >> e[i];
    	}
    
    	cout << "请分别输入三位同学的计算机成绩:";
    	for (int j = 0; j < 3; j++)
    	{
    		cin >> c[j];
    	}
    
    	for (int k = 0; k < 3; k++)                 //学生总分
    	{
    		t[k] = e[k] + c[k];
    	}
    	
    	bubble(t, 3);
    
    	return 0;
    }
    

    测试数据及运行结果

    在这里插入图片描述

    展开全文
  • 摩尔的Java学习笔记2.6 使用二维数组存储学生的数据,包括学号、姓名、操作系统成绩、Java成绩、高数成绩、总分;一行存储一个学生的数据;要求输入若干学生的数据,...然后按照总分由高到低重新排列;输出排序后的结果

    摩尔的Java学习笔记2.6

    第二周作业:

    1、实现将一组整数进行升序排列;
    2、用二维数组实现,5个学生4门课程的总分和平均分的统计工作;
    3、打印八行八列杨辉三角,开头不打印空格;
    4、模拟打牌游戏中的发牌过程。用1~52来代表52张牌,玩家有四人,要求将发牌结果存入一个二维数组(4行13列),最后显示发牌结果,不许重复;
    5、输入多个字符串,存入数组,然后按照字符串的大小重新升序排列;
    6、使用二维数组存储学生的数据,包括学号、姓名、操作系统成绩、Java成绩、高数成绩、总分;一行存储一个学生的数据;要求输入若干学生的数据,求出总分;然后按照总分由高到低重新排列;输出排序后的结果。

    6、使用二维数组存储学生的数据,包括学号、姓名、操作系统成绩、Java成绩、高数成绩、总分;一行存储一个学生的数据;要求输入若干学生的数据,求出总分;然后按照总分由高到低重新排列;输出排序后的结果。

    
    /**
     * @author 薛莲婷
     *使用二维数组存储学生的数据,包括学号、姓名、操作系统成绩、Java成绩、高数成绩、总分;一行存储一个学生的数据;
     *要求输入若干学生的数据,求出总分;然后按照总分由高到低重新排列;输出排序后的结果
     *
     */
    
    /*供复制以输入的学生信息:
    112 张一 98 70 78
    20 李二 98 0 1
    01 王三 98 78 29
    302 赵四 99 97 20
     */
    import java.util.*;
    
    class Assignment5 {
    
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
    
            System.out.println("请输入学生人数:");
    
            int n=sc.nextInt();
            String [][]student=new String[n][6];                    //学生信息的二位数组
    
            System.out.println("请输入学号、姓名、操作系统成绩、Java成绩、高数成绩:");
            for(int i=0;i<n;i++)
            {
                System.out.printf("第%d位学生:",i+1);
                for(int j=0;j<5;j++)
                {
                    student[i][j]=sc.next();                        //每位学生信息占一行
                }
            }
    
            float []sum=new float[n];                               //存放总分的一个float型数组
    
            for(int i=0;i<n;i++)                                    //计算每位学生的总分
            {
                sum[i]=Float.parseFloat(student[i][2])+Float.parseFloat(student[i][3])+Float.parseFloat(student[i][4]);
                student[i][5]=String.valueOf(sum[i]);               //将float型转为字符串存入原数组
            }
    
            float temp;
            String [][]p=new String[1][6];
            for(int i=0;i<n-1;i++)                                  //根据总分进行升序排序
            {
                int max=i;
                for(int j=i+1;j<n;j++)
                {
                    if(sum[max]<sum[j])
                    {
                        max=j;
                    }
    
                    temp=sum[max];
                    sum[max]=sum[j];
                    sum[j]=temp;
    
                    p[0]=student[max];
                    student[max]=student[j];
                    student[j]=p[0];
    
                }
            }
    
            System.out.println("按总分升序排列后的学生信息:\n学号\t姓名\t操作系统成绩\tJava成绩\t高数成绩\t总分");
            for(int i=0;i<n;i++)                                    //打印升序排列之后的学生信息
            {
                for(int j=0;j<6;j++)
                {
                    System.out.print(student[i][j]+"\t");
                }
                System.out.print("\n");
            }
            sc.close();
        }
    
    }
    
    展开全文
  • import java.util.Scanner; import java.util.TreeSet;... * 按照总分高到低输出控制台(自然排序) * */ public class TreeSetTest2 { public static void main(String[] args) { TreeSet<Student&
  • 用C#设计控制台应用程序,输入若干学生的英语和数学成绩,求出总分,并按总分高到低排序。要求设计一个学生类 Student,所有学生对象存放在一个 Student对象数组中,通过一个方法对其按照总分进行降序排序,最后输出排序...
  • 任务:对输入的一组成绩进行排序排序的结果形式(由低到高排列或由高到低排列)用户决定。 编程要求:编写Python程序,实现对某班学员某门课程考试成绩的排序。成绩(学员人数不固定)用户从键盘输入(假设...
  • 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分高到低输出控制台。 2,分析: 定义一个学生类 成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩 成员方法:空参,有参构造,...
  • 编程:输入两个学生3门课程(语、数、英)的基本信息,计算每个学生总分,并按总分由高到低输出学生信息表。 学生信息:学号、姓名、语、数、英、总分。 struct student{ /* 学生结构体 */ int num; /* 学号 */ ...
  • import java.util.Comparator;... * 键盘录入五个学生信息,(姓名,语文成绩,数学成绩,英语成绩),按照总分高到低输出控制台 * * * 分析 * 定义学生类 * 创建TreeSet集合 * 键盘录入 * 遍历Tre...
  • 要求可以根据每个学生的成绩进行由高到低的排序如果成绩相等则按照年龄由低到高排序 数据的样式如下张三:19:90|李四:20:90|王五:20:80|赵六:21:100 import java.util.Arrays; public class Test03_...
  • package comheima.test; import java.util.Comparator;... * 学生信息输入并排序 键盘录入信息 (姓名,语文成绩,数学成绩,英语成绩),按总分高到低输出 * * @author fenuang 1,定义学生类 2,键盘录入scan
  • 编写一个程序,从文件读取成绩,计算总分,按总分到底的顺序输出(各字段对齐),示例运行结果如下: f=open('D:/test1.txt','r') d=[] t=next(f) for b in f: b=b.split(',') b[2]=int(b[2]) b[3]=int(b[3])...
  • 按照总分高到低输出控制台 注:总分相同等情况下按照语文成绩排序,其次是数学成绩、英语成绩、年龄、姓名 1.先在main方法外定义一个学生类 class Student{ private String name; private int age; private ...
  • //基于冒泡排序  for(int i=0;i;i++){  for(int j=0;j;j++){  if(person[j].score[j+1].score){ //根据成绩交换位置  if(person[j].score[j+1].score){  temp=person[j];  person[j]=...
  • * 3,总分由高到低,需要排序,需要对学生对象中的总分排序。需要将多个学生对象进行容器存储。 * 4,将容器中的学生对象的信息写入文件中。 * 容器:TreeSet * * 使用操作学生信息的工具类 */ ...
  • , Helvetica, sans-...<span style="white-space:pre"> </span>System.out.println("是否继续进行添加"+1+"就是退出"); <span style="white-space:pre"> </span>int out= new Scanner(System.in).nextInt(); ...
  • * 键盘录入五个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分高到低输出控制台 * * 分析 * A:定义学生类 * B:创建一个集合 * 总分怎么从到底排序? * C:键盘录入五个学生信息 * D:遍历
  • 总分由高到低,须要排序,须要对学生对象中的总分排序。须要将多个学生对象进行容器存储。 * 4,将容器中的学生对象的信息写入文件里。 * 容器:TreeSet * * 使用操作学生信息的工具类 */ public ...
  • 1 <!... 2 ... 总分:<input type="text" id="total"><br> 51 从到底排列:<span id="span01"></span> 52 53 54   转载于:https://www.cnblogs.com/gongxuanming/p/7044466.html
  • 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分高到低输出控制台 分析: 1,定义一个学生类 * 成员变量:姓名,语文成绩,数学成绩,英语成绩 * 成员方法:空参构造,有参构造;有...
  • 数组排序:采用对象数组的方式来存储学生对象 缺点:人数变动时,程序需要较大修改 源代码 public class student { private String name; private int age; private double grade; public student(String name,...
  • 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分高到低存入文本文件
  • /*这是利用选择排序排序*/ #include&amp;lt;stdio.h&amp;gt; int main() { int a[10]; int i=0,j=0,t; for(i=0;i&amp;lt;10;i++) scanf(&quot;%d&quot;,&amp;amp;a[i]); ...
  • //键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分高到低输出控制台  Scanner sc =new Scanner(System.in);  System.out.println("请输入5个学生成绩格式是:(姓名,语文成绩,数学成绩,英语...
  • 排序学号和总分

    2021-01-30 21:37:39
    总分相同则学号靠前的排前面的规则,对成绩进行排序 */ #include <bits/stdc++.h> using namespace std; struct stu{ int num;//学号 int sum;//总分 }; bool cmp(stu a,stu b){ if(a.sum > b.sum){ ...
  • 使用Lambda省略格式写法对学生数组按照考试成绩由高到低进行排序。 Student[] array = {//学生对象数组 new Student("宋远桥", 99), new Student("张翠山", 100), new Student("张无忌", 34), new Student(...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,931
精华内容 7,572
关键字:

总分由高到低进行排序