当前位置: 首页 > news >正文

学生分数排序

输入是个学生分数,按座位或者名字之类的随机,输出是按照输入顺序然后后面加上排名

 

 1 // C_Study.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 
 7 using namespace std;
 8 
 9 #define MAX 100
10 #define MIN 0
11 
12 
13 
14 int _tmain(int argc, _TCHAR* argv[])
15 {
16     int score[MAX+1]={0};
17     int juni[MAX+2]={0};
18 
19     int count=0,i,f=0;
20 
21     do{
22 
23         printf("输入分数,-1结束:");
24         scanf("%d",&score[count++]);  
25     
26     }while(score[count-1]!=-1);
27     count--;
28 
29     for(i=0;i<count;i++)
30         juni[score[i]]++;
31     juni[MAX+1]=1;
32 
33     for(i=MAX;i>=MIN;i--)
34                          juni[i]=juni[i]+juni[i+1]; 
35 
36     
37     printf("得分排行\n");
38     
39     for(i=0;i<count;i++)
40         printf("%d %d\n",score[i],juni[score[i]+1]);
41 
42 
43     while(1)
44     {
45         
46     }
47     return 0;
48 }
main

出来是分数名次:

看了半天才看明白:

 for(i=0;i<count;i++)
  juni[score[i]]++;
 juni[MAX+1]=1;

在0-100之间,哪几个分值被录入了,就进行记录,有几个学生就记录几次,没有此分值的就为0,比如上面6被录入两次则此时juni[6]=2

 

 for(i=MAX;i>=MIN;i--)
  juni[i]=juni[i]+juni[i+1];

从上到下进行一遍遍历,因为juni[MAX+1]=1;所以如果MAX分数录入,执行后juni[MAX]=1,有录入则juni[MAX]比之前+1,这样其实每个分数的排名都错了一位,这样可以计算出并列排名情况,如果输入多次就根据之前记录的+n,

juni[MAX+1]=1就是为了把第一名位置设置为1,即使有n个人都为MAX分数排名也都是1,第二个分值的人才会去递增。

 

所以最后输出时候:printf("%d %d\n",score[i],juni[score[i] +1]);

 

如果我们想输出时候按分数高低顺序的话,再加俩数据进行记录即可,这时候juni[i]=juni[i]+juni[i+1];可以不用了,具体如下

 1 // C_Study.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 
 7 using namespace std;
 8 
 9 #define MAX 100
10 #define MIN 0
11 
12 
13 
14 int _tmain(int argc, _TCHAR* argv[])
15 {
16     int score[MAX+1]={0};
17     int juni[MAX+2]={0};
18     int f_score[MAX+1]={0};
19     int f_juni[MAX+1]={0};
20 
21     int count=0,i,f=0,mingci=1,m;
22 
23     do{
24 
25         printf("输入分数,-1结束:");
26         scanf("%d",&score[count++]);  
27     
28     }while(score[count-1]!=-1);
29     count--;
30 
31     for(i=0;i<count;i++)
32         juni[score[i]]++;
33     juni[MAX+1]=1;
34 
35     for(i=MAX;i>=MIN;i--)
36     {
37         if(juni[i]>0)
38         {
39             for(m=0;m<juni[i];m++)
40             {
41               f_score[f]=i;
42               f_juni[f]=mingci;
43               f++;
44             }
45         
46             mingci+=juni[i];            
47         }
48         juni[i]=juni[i]+juni[i+1];
49             
50     }
51 
52     for(i=0;i<count;i++)
53        printf("%d %d\n",f_score[i],f_juni[i]);
54     
55     printf("得分排行\n");
56     
57     for(i=0;i<count;i++)
58         printf("%d %d\n",score[i],juni[score[i]+1]);
59 
60 
61     while(1)
62     {
63         
64     }
65     return 0;
66 }
View Code

改动:
 int f_score[MAX+1]={0};
 int f_juni[MAX+1]={0};

int count=0,i,f=0,mingci=1,m;

 for(i=MAX;i>=MIN;i--)
 {
  if(juni[i]>0)
  {
      for(m=0;m<juni[i];m++)
   {
     f_score[f]=i;
     f_juni[f]=mingci;
     f++;
   }
  
   mingci+=juni[i];   
  }
  juni[i]=juni[i]+juni[i+1];
   
 }

 

 

转载于:https://www.cnblogs.com/wwjdwy/p/3388068.html

相关文章:

  • zabbix3.4上简单web监测功能测试
  • linux系统man查询命令等级与意义
  • 关于ES6的Promise的使用深入理解
  • P1065 津津的储蓄计划
  • 2018年 7月总结8月计划
  • Proteus仿真_01、 8086 IO译码仿真
  • CentOS 7之Postfix部署系列 (二) CentOS网络设置
  • AJAX PHP 请求实例
  • 使用Formik轻松开发更高质量的React表单(二)使用指南
  • HDU-3874 Necklace 线段树+离线
  • topcoder srm 590 div1 (max_flow_template)
  • JavaScript 代码格式化
  • ubuntu12.04下面安装eclipse开发环境
  • Java虚拟机详解03----常用JVM配置参数
  • SQL基础
  • DataBase in Android
  • Java应用性能调优
  • Java知识点总结(JavaIO-打印流)
  • JS变量作用域
  • linux学习笔记
  • markdown编辑器简评
  • Meteor的表单提交:Form
  • mockjs让前端开发独立于后端
  • Python_OOP
  • Python学习笔记 字符串拼接
  • SOFAMosn配置模型
  • Sublime text 3 3103 注册码
  • Vue 动态创建 component
  • 飞驰在Mesos的涡轮引擎上
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 记一次删除Git记录中的大文件的过程
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 思否第一天
  • 网页视频流m3u8/ts视频下载
  • 一些css基础学习笔记
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (12)Hive调优——count distinct去重优化
  • (C#)一个最简单的链表类
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)windows配置JDK环境
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)Linux下编译安装log4cxx
  • (转)shell调试方法
  • (转)程序员疫苗:代码注入
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ... 是什么 ?... 有什么用处?