C++实现按绩点排名
题目内容:有一些班级的学生需要按绩点计算并排名。每门课的成绩只有在60分以上(含),才予以计算绩点。课程绩点的计算公式为:(课程成绩-50)÷10×学分数。一个学生的总绩点为其所有课程绩点总和除以10.
输入描述:输入数据中含有一些班级(数量≤20)。第一行为班级数量。每个班级的第一行数据为n(≤10),表示该班级共有n门课程。每个班级的第二行数据为a1,a2,a3,……,an,表示每门课程的学分。班级数据中的第三行数据为一个整数m(≤50),表示本班级有m个学生;班级数据接下去有m行对应m个学生数据;每行学生数据中的第一个为字串s1(s1中间没有空格),表示学生姓名,后面跟有n个整数s1,s2,s3,……sn,表示该学生各门课程的成绩(0≤si ≤100).
输出描述:以班级为单位输出各个学生按绩点分从大到小的排名。如果绩点分相同,则按学生名字的ASCII串值从小到大排名。每个班级的排名输出之前应先给出一行,描述班级序号“class #:”(#表示班级序号),班级之间应空出一行。排名时,每个学生占一行,列出名字和总绩点。学生输出宽度为10个字符,左对齐,在空出一格后列出总绩点。
题目分析:
(1)定义一个正整数作为班级数;定义一个正整数作为课程数量;定义一个double变量作为学分;定义一个double型向量容器存储学分;定义一个正整数作为班级人数;定义一个结构体存储学生的名称和总绩点;定义一个字符串变量作为学生名称;定义一个元素为结构体的向量容器存储最终学生名称和总绩点
(2)从键盘读入班级数
(3)对每个班级,从键盘读入课程数量,再读入每门课程的学分,并将每个学分插入到向量容器中
(4)对每个班级中的每个学生,从键盘读入学生名称,存储在结构体中
(5)对每个班级中的每个学生的每门课程,读入成绩,若成绩小于60,则继续读入下一门课程的成绩,否则计算该课程的绩点
(6)对每个班级中的每个学生,计算其总绩点,存储在结构体中,并插入向量容器
(7)编写比较函数,若总绩点不相等则按总绩点从大到小的顺序返回,若总绩点相等则按学生名字从小到大的顺序返回
(8)将向量容器中的元素按比较函数排序
(9)对向量容器中的每个元素,格式化输出其信息
参考代码:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip> using namespace std; struct student
{
string s;
double d;
}; bool myComp(const student &s1,const student &s2)
{
if(s1.d!=s2.d) return s1.d>s2.d;
if(s1.s!=s2.s) return s1.s<s2.s;
} int main(int argc,char * argv[])
{
int n;
int c;
double xf;
vector<double> vxf;
int p;
string name;
double score;
student xs;
vector<student> vxs;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>c;
for(int j=0;j<c;j++)
{
cin>>xf;
vxf.push_back(xf);
}
cin>>p;
for(int k=0;k<p;k++)
{
cin>>name;
xs.s=name;
xf=0.0;
for(int m=0;m<c;m++)
{
cin>>score;
if(score<60) continue;
xf=xf+(score-50)/10*vxf[m];
}
xs.d=xf/10;
vxs.push_back(xs);
}
cout<<(i?"\n":"");
cout<<"Class "<<i+1<<":"<<endl;
sort(vxs.begin(),vxs.end(),myComp);
for(vector<student>::iterator it=vxs.begin();it<vxs.end();it++)
{
cout<<fixed<<setprecision(2);
cout<<left<<setw(11);
cout<<(*it).s<<(*it).d<<endl;
}
vxf.clear();
vxs.clear();
}
system("pause");
return 0;
}
运行结果:

C++实现按绩点排名的更多相关文章
- 2015腾讯暑期实习生 Web前端开发 面试经历
[2015腾讯暑期实习生 Web前端开发 面试经历] 好吧,首先声明,我被刷了,应该是跪在二面 微信查到的面试状态一直呈现复试中 .. 整整四天了.. 看来是没希望了 不过也是一次经历,记录一下还是可 ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- 404 Note Found队 福大助手项目测评
目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ...
- BATA冲刺准备
目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ...
- 计算机保研,maybe this is all you need(普通双非学子上岸浙大工程师数据科学项目)
写在前面 9.28接收了拟录取通知,也终究是尘埃落定了,我人生的又一个阶段也终于结束.面对最终录取结果,或多或少会有所遗憾,但也还是基本达到了预期的目标了. 作为在今年严峻的保研形势下幸存的我,一直想 ...
- 【微信SEO】公众号也能做排名?
[写于2016年8月] 最近,微信团队发出一则公告,开放公众号运营者一年内更改公众号名一次,这对不少名字起的奇葩名字(包括dkplus)的公众号来说是一件好事. 为什么说是好事呢?公众号名字直接关联到 ...
- 你真的会玩SQL吗?表表达式,排名函数
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 [treap hash]
1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1318 Solved: 498[Submit][ ...
- MySQL 排名统计
select actor_id,@curr_cnt:=cnt as cnt , ,@rank) as rank, @prev_cnt:=@curr_cnt as dummy from( select ...
随机推荐
- nyoj 105 九的余数
点击打开链接 九的余数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数. 输入 ...
- MPlayer在ARM上的移植(S5PV210开发板)
MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只 ...
- css选择器nth-child()和nth-of-type()的应用
<style> .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth- ...
- SparkStreaming结合Kafka使用
spark自带的example中就有streaming结合kafka使用的案例: $SPARK_HOME/examples/src/main/scala/org/apache/spark/exampl ...
- winform异步进度条LongTime
winform异步进度条LongTime,运用到回调函数 定义事件的参数类: namespace LongTime.Business { // 定义事件的参数类 public class ValueE ...
- OpenStack Nova 制作 Windows 镜像
OpenStack Nova 制作 Windows 镜像 windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...
- android L 新控件侧滑菜单DrawerLayout 使用教程
介绍 drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产 ...
- CODESOFT中的圆角矩形的弧度该怎样设置?
CODESOFT标签设计软件提供多种图形制作按钮,方便用户更为快捷的制作标签.其中就包括矩形,圆角矩形的快捷创建按钮.本文将介绍如何设置CODESOFT圆角矩形的弧度. 若有疑问可直接访问:htt ...
- nginx 配置.json文件直接访问
不要弹出下载 配置nginx.conf http { include mime.types; default_type application/json;
- Android四大组件小结
Android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...