题目描述

某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:

  1. 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;
  2. 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;
  3. 成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;
  4. 西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;
  5. 班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;

只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。

现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。

格式

输入格式

输入的第一行是一个整数N(1 <= N <= 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。

输出格式

输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。

样例1

样例输入1

4

YaoLin 87 82 Y N 0

ChenRuiyi 88 78 N Y 1

LiXin 92 88 N N 0

ZhangQin 83 87 Y N 1

Copy

样例输出1

ChenRuiyi

9000

28700

题解

这道题目是一道很基础的题,没有涉及什么算法。

主要就是考察学生对 循环语句 和 条件语句 这两个编程知识点的掌握程度。

我们需要设置如下数据:

  • 数组name:表示 学生姓名
  • 数组p1:表示 期末平均成绩
  • 数组p2:表示 班级评议成绩
  • 数组b1:表示 是否是学生干部
  • 数组b2:表示 是否是西部省份学生
  • sumMoney:总奖学金
  • maxIndex:获得最高奖学金的学生的编号(编号从0到n-1)
  • maxMoney:最高的一个学生的奖学金
  • tmpMoney:用于临时存储每一个学生的奖学金

然后我们循环内遍历n个学生的数据,每一次我们都能获得学生i的奖学金tmpMoney,如果tmpMoney比maxMoney大,则maxMoney=tmpMoney,并且maxIndex=i,同时我们将sumMoney加上tmpMoney。最终我们就能得到我们所要的结果:

  • 最高奖学金获得者姓名:name[maxIndex]
  • 该学生获得的最高奖学金:maxMoney
  • 总奖学金:sumMoney

代码如下:

#include <iostream>
#include <string>
using namespace std;
string name[100], c1, c2;
int p1[100], p2[100], cnt[100], n, maxIdx = -1, maxMoney = -1, tmpMoney, sumMoney = 0;
bool b1[100], b2[100]; int main()
{
cin >> n;
for (int i = 0; i < n; i ++)
{
cin >> name[i] >> p1[i] >> p2[i] >> c1 >> c2 >> cnt[i];
b1[i] = (c1[0] == 'Y');
b2[i] = (c2[0] == 'Y');
tmpMoney = 0;
// 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;
if (p1[i] > 80 && cnt[i] >= 1)
tmpMoney += 8000;
// 2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;
if (p1[i] > 85 && p2[i] > 80)
tmpMoney += 4000;
// 3) 成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;
if (p1[i] > 90)
tmpMoney += 2000;
// 4) 西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;
if (p1[i] > 85 && b2[i] == true)
tmpMoney += 1000;
// 5) 班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;
if (p2[i] > 80 && b1[i] == true)
tmpMoney += 850;
if (tmpMoney > maxMoney) {
maxMoney = tmpMoney;
maxIdx = i;
}
sumMoney += tmpMoney;
}
cout << name[maxIdx] << endl;
cout << maxMoney << endl;
cout << sumMoney << endl;
return 0;
}

Vijos 1001 谁拿了最多奖学金的更多相关文章

  1. vijos P1001 谁拿了最多奖学金

    vijos P1001 谁拿了最多奖学金 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(&g ...

  2. Vijos:P1001谁拿了最多奖学金

    描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以 ...

  3. NOIP2005 谁拿了最多奖学金

    1谁拿了最多奖学金 (scholar.pas/c/cpp) [问题描述] 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1)     院士奖学金,每人800 ...

  4. [TYVJ] P1002 谁拿了最多奖学金

    谁拿了最多奖学金 背景 Background NOIP2005复赛提高组第一题   描述 Description 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同 ...

  5. P1002 谁拿了最多奖学金

    P1002 谁拿了最多奖学金 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖 ...

  6. tyvj——P1002 谁拿了最多奖学金

      P1002 谁拿了最多奖学金 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发 ...

  7. 【洛谷p1051】谁拿了最多奖学金

    谁拿了最多奖学金[题目链接] 这道题早就想做它啦. 咱也不知道为啥,咱就是看这道题特别顺眼呢qwq: MY SOLUTION: 其实这道题很简单,开一个结构体记录各项信息,然后根据条件计算出这个人获得 ...

  8. 洛谷题解 P1051 【谁拿了最多奖学金】

    其实很水 链接: P1051 [谁拿了最多奖学金] 注意: 看好信息,不要看漏或看错因为信息很密集 AC代码: 1 #include<bits/stdc++.h>//头文件 2 using ...

  9. TYVJ P1002 谁拿了最多奖学金 Label:模拟 水

    背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同:1)     院士奖学金,每人8000元,期末平均成绩高于80分( ...

随机推荐

  1. CollectioView滚动到指定section的方法

    项目中的需求:collectionView顶部有一个scrollView组成的标签,点击标签,让collectionView滚动到指定的行,滚动collectionView自动切换到顶部指定的标签 实 ...

  2. PC端网页的基本构成

    首先,一个前端最基本的就是排网页,有人会看不起拍页面,认为不就是排一个页面嘛,有啥的,分分钟的事,可是他不知道的是,一个网页中也包含了很多内容,像我们如果不理解margin,padding,会经常对我 ...

  3. CefSharp使用入门

    首先这是很重要的,环境搭建: 我用的是VS2017 步骤            方法 1.            打开VS的安装管理器 2.             进入修改界面,使用C++的桌面开发 ...

  4. 在wamp下使用netbeans开启Xdbug

    1.到http://www.xdebug.org 下载与PHP对应的xdebug版本,也可以把phpinfo源码粘贴到http://www.xdebug.org/find-binary.php,提交后 ...

  5. Spring与Mybatis整合

    一 概述 1.整合的目的 将Mapper映射器的创建任务交给Spring容器. 二 具体实现 1.创建sqlSessionFactory: <bean id="sqlSessionFa ...

  6. 移动端车牌识别——可以嵌入智能手机系统里的新OCR识别技术

    移动端车牌识别技术,是在OCR光学字符识别技术的基础上研发的用来识别汽车号牌特征信息的图像识别技术.在国内,该项技术由北京易泊时代携手清华大学成功地将"国家863计划"项目成果-- ...

  7. 码工具通过ICP备案

    5月22日,为广大程序员造福的在线工具--码工具 通过了ICP备案,这也意味着本站也越来越正规化,规范化.大家从今日起就可以在网站底部看到本站的ICP备案号. 备案/许可证编号:粤ICP备170597 ...

  8. tomcat服务器端口冲突问题的解决

    问题:tomcat服务器端口冲突 原因:服务器端口被占用:重启服务器之前原来的服务器没有关闭. 解决方案: 方案一:把占用的端口结束(方便快捷) 在cmd窗口输入命令 netstat -ano (查看 ...

  9. OpenGL ES 2.0 渲染管线 学习笔记

    图中展示整个OpenGL ES 2.0可编程管线 图中Vertex Shader和Fragment Shader 是可编程管线: Vertex Array/Buffer objects 顶点数据来源, ...

  10. CSS 简单了解(二)

    我们第一天说了简单的HTML,第二天说了简单的CSS.那么今天.咱们就来说一说他们的结合如何使用吧! 首先说引用方式,和使用方法吧! 1.内部样式表.(放入<head>中) <hea ...