【题目链接】

ybt 1839:【05NOIP提高组】谁拿了最多奖学金
OpenJudge NOI 1.9 04:谁拿了最多奖学金
洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金

【题目考点】

1. 模拟

2. 求和

3. 求最值

【解题思路】

本题考查对稍微复杂的业务逻辑的模拟,需要答题者有良好的代码组织能力,即每个变量的意义要明确,组织要清晰,添加合理的注释,力求使自己写的代码自己要能看懂(不要觉得这是很容易的事情)。
本题可以用多个数组完成,也可以用结构体数组完成。
(推荐使用结构体。使用结构体的目的就是使代码语意更明确。这一点十分重要,可以帮助你少出bug,或出bug后容易查bug,能帮你节省大量时间)

【题解代码】

解法1:使用多个数组

#include<bits/stdc++.h>
using namespace std;
#define N 105
string name[N];//name[i]:第i人的姓名
int money[N];//money[i]:第i人获得的奖学金 初值为0
int main()
{int n, gStudy, gClass, paperNum, sum = 0, mxi = 1;//gStudy:学习成绩 gClass:班级成绩 paperNum:论文数量 char isLeader, isWest;//isLeader:是否是干部 isWest:是否来自西部 cin >> n;for(int i = 1; i <= n; ++i){cin >> name[i] >> gStudy >> gClass >> isLeader >> isWest >> paperNum;if(gStudy > 80 && paperNum >= 1)money[i] += 8000;if(gStudy > 85 && gClass > 80)money[i] += 4000;if(gStudy > 90)money[i] += 2000;if(gStudy > 85 && isWest == 'Y')money[i] += 1000;if(gClass > 80 && isLeader == 'Y')money[i] += 850;if(money[i] > money[mxi])//求最大值下标 mxi:获得最多奖学金的人的编号。如有相同最大值,只会取先出现的最大值的下标 mxi = i;sum += money[i];//sum:所有人奖学金总和 }cout << name[mxi] << endl << money[mxi] << endl << sum;  return 0;
}

解法2:使用结构体

#include<bits/stdc++.h>
using namespace std;
#define N 105
struct Student
{string name;int money;Student(){}//空构造函数,如果没有空构造函数,就无法声明Student对象数组 Student(string _name, int gStudy, int gClass, char isLeader, char isWest, int paperNum) {//通过各种指标构造Student对象name = _name;money = 0;if(gStudy > 80 && paperNum >= 1)money += 8000;if(gStudy > 85 && gClass > 80)money += 4000;if(gStudy > 90)money += 2000;if(gStudy > 85 && isWest == 'Y')money += 1000;if(gClass > 80 && isLeader == 'Y')money += 850;}
};
Student stu[N];//stu[i]:学生i
int main()
{string name;int n, gStudy, gClass, paperNum, sum = 0, mxi = 1;//gStudy:学习成绩 gClass:班级成绩 paperNum:论文数量 char isLeader, isWest;//isLeader:是否是干部 isWest:是否来自西部 cin >> n;for(int i = 1; i <= n; ++i){cin >> name >> gStudy >> gClass >> isLeader >> isWest >> paperNum;stu[i] = Student(name, gStudy, gClass, isLeader, isWest, paperNum);//生成对象赋值给stu[i] if(stu[i].money > stu[mxi].money)//求最大值下标 mxi:获得最多奖学金的人的编号。如有相同最大值,只会取先出现的最大值的下标 mxi = i;sum += stu[i].money;//sum:所有人奖学金总和 }cout << stu[mxi].name << endl << stu[mxi].money << endl << sum;  return 0;
}

信息学奥赛一本通 1839:【05NOIP提高组】谁拿了最多奖学金 | OpenJudge NOI 1.9 04:谁拿了最多奖学金 | 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金相关推荐

  1. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  2. 信息学奥赛一本通 2047:【例5.16】过滤空格 | OpenJudge NOI 1.7 23:过滤多余的空格

    [题目链接] ybt 2047:[例5.16]过滤空格 OpenJudge NOI 1.7 23:过滤多余的空格 [题目考点] 1. 字符数组 2. string类 3. 计数 [题解代码] 解法1: ...

  3. 信息学奥赛一本通 1113:不与最大数相同的数字之和 | OpenJudge NOI 1.9 07

    [题目链接] ybt 1113:不与最大数相同的数字之和 OpenJudge NOI 1.9 07:不与最大数相同的数字之和 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置 ...

  4. 信息学奥赛一本通 1079:计算分数加减表达式的值 | OpenJudge NOI 1.5 33

    [题目链接] ybt 1079:计算分数加减表达式的值 OpenJudge NOI 1.5 33:计算分数加减表达式的值 [题目考点] 1. 循环 [解题思路] 分析各个项的变化,相邻两项有两点不同 ...

  5. 信息学奥赛一本通 1022:整型与布尔型的转换 | OpenJudge NOI 1.2 09

    [题目链接] ybt 1022:整型与布尔型的转换 OpenJudge NOI 1.2 09:整型与布尔型的转换 [题目考点] 1. bool类型(布尔类型) bool类型常量:true(真),fal ...

  6. 信息学奥赛一本通 ybt 1933:【05NOIP普及组】循环 | 洛谷 P1050 [NOIP2005 普及组] 循环

    [题目链接] ybt 1933:[05NOIP普及组]循环 洛谷 P1050 [NOIP2005 普及组] 循环 [题目考点] 1.高精度 2.数学 [解题思路] 要求最后k位的循环长度,可以从低位向 ...

  7. 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树

    [题目链接] ybt 1107:校门外的树 ybt 1931:[05NOIP普及组]校门外的树 OpenJudge NOI 1.6 06:校门外的树 洛谷 P1047 [NOIP2005 普及组] 校 ...

  8. 信息学奥赛一本通 1103:陶陶摘苹果 |1930:【05NOIP普及组】陶陶摘苹果 | OpenJudge NOI 1.6 02 | 洛谷 P1046 [NOIP2005 普及组] 陶陶摘苹果

    [题目链接] ybt 1103:陶陶摘苹果 ybt 1930:[05NOIP普及组]陶陶摘苹果 OpenJudge NOI 1.6 02:陶陶摘苹果 洛谷 P1046 [NOIP2005 普及组] 陶 ...

  9. 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金

    [题目链接] ybt 1179:奖学金 ybt 1938:[07NOIP普及组]奖学金 OpenJudge NOI 1.10 04:奖学金 洛谷 P1093 [NOIP2007 普及组] 奖学金 [题 ...

最新文章

  1. centos安装及网络配置
  2. 离不开深度学习的自动驾驶
  3. C语言durand kerner算法求近似根roots(附完整源码)
  4. 各种平台解压压缩总结
  5. linux系统时间和硬件时间的修改,Linux修改日期、时间,系统与硬件时间
  6. 玩转 SpringBoot2.x 之自定义配置类整合Druid(Mybatis版)
  7. tomcat本地部署war包的方式
  8. PLC通过485与单片机通讯示例
  9. 戴尔计算机更新程序,戴尔电脑怎么关闭自动更新系统
  10. 微专题:数据中心选址
  11. 如何用仅用C语言判断编译器的大小端
  12. CS研究生学习阶段必读书籍
  13. 多标签分类、BCELoss和BCEWithLogitsLoss用法
  14. ESMTP身份验证机制探索手记
  15. 电脑重装系统UEFI启动如何设置
  16. 探访广州黑人区,我好像来到非洲
  17. 【转】从EDA使用角度捋一遍芯片设计流程
  18. 数据结构案例 C语言版
  19. 2021遥感应用组二等奖:基于长时序Landsat遥感影像的赣南脐橙时空变化分析
  20. Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤——源码+图文效果详情

热门文章

  1. Node.js开发之Express框架安装
  2. Cocos2d-x中常用宏的作用
  3. 终于有人把用户画像的流程、方法讲明白了
  4. 2019上半年这10本新书,技术大牛们都在追着看
  5. 想用Python爬小姐姐图片?那你得先搞定分布式进程
  6. linux内核rest_init分析
  7. 原创 | 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?...
  8. 天画-codeMaker组件化架构升级实践
  9. 网站为什么 JS 调用尽量放到网页底部?
  10. 微信和钉钉电脑客户端多开的解决方法(Windows 10)