题目

1192: 奖学金(结构体专题)
时间限制: 1 Sec 内存限制: 128 MB
提交: 3495 解决: 2230

某校发放奖学金共5种,获取条件各不同:
1.阳明奖学金,每人8000,期末平均成绩>80,且在本学期发表论文大于等于1篇;
2.梨洲奖学金,每人4000,期末平均成绩>85,且班级评议成绩>80;
3.成绩优秀奖,每人2000,期末平均成绩>90;
4.西部奖学金,每人1000,期末平均成绩>85的西部省份学生;
5.班级贡献奖,每人850,班级评议成绩>80的学生干部。
只要符合条件就可以得奖,一人可兼得多项奖学金。例:某生,期末平均成绩87,班级评议成绩82,且是学生干部,则可同时获得梨洲奖学金和班级贡献奖,奖金总数4850。现给出若干学生的姓名、期末平均成绩、班级评议成绩、是否学生干部、是否西部省份学生、发表论文数。计算哪个同学获得的奖金总数最高?有多个最高值则输出第一个出现的。

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

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

样例输入 Copy
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
ChenRuiyi
9000
28700

代码

#include <iostream>
#include <string>
constexpr auto Y = true;
constexpr auto N = false;
constexpr auto YMSch = 8000; // 阳明奖学金
constexpr auto LZSch = 4000; // 梨洲奖学金
constexpr auto EXSch = 2000; // 成绩优秀将
constexpr auto WESch = 1000; // 西部奖学金
constexpr auto CLSch = 850;  // 班级贡献奖
using namespace std;struct Stu {char name[30];                // 姓名unsigned int final_score;   // 期末评分unsigned int class_score;   // 班级评分bool cadre = N;                 // student cadre 干部bool west_pro = N;              // western provinc student 西部省份学生unsigned int theses = 0;        // 论文数unsigned int scholarsip = 0;    // 奖学金
};Stu* inputStu(int n);
void printStuinfo(Stu* parr_stu, int n);
void printFirWinner(Stu* parr_stu, int n);
void calScholarship(Stu* parr_stu, int n);int main() {int n;cin >> n; // 输入学生数Stu* parr_stu = inputStu(n);//cout << endl;//printStuinfo(parr_stu, n);//cout << endl;printFirWinner(parr_stu, n);//cout << endl;delete[] parr_stu; // inputStu中用 new 创建的,在主函数中 deletereturn 0;
}Stu* inputStu(int n)
{Stu* arr_stu = new Stu[n];Stu temp;char y_n;for (int i = 0; i < n; i++) {cin >> temp.name >> temp.final_score >> temp.class_score;// >> temp.cadre >> temp.west_pro >> temp.theses;cin >> y_n;temp.cadre = y_n == 'Y' ? Y : N;cin >> y_n;temp.west_pro = y_n == 'Y' ? Y : N;cin >> temp.theses;arr_stu[i] = temp;}return arr_stu;
}void printStuinfo(Stu* parr_stu, int n) // 打印学生信息
{char y_n;for (auto it = parr_stu; it != parr_stu + n; it++) {cout << (*it).name << " " << (*it).final_score << " "<< (*it).class_score << " ";y_n = (*it).cadre == Y ? 'Y' : 'N';cout << y_n << " ";y_n = (*it).west_pro == Y ? 'Y' : 'N';cout << y_n << " ";cout << (*it).theses << endl;}
}void printFirWinner(Stu* parr_stu, int n) // 打印获奖者信息
{calScholarship(parr_stu, n); // 先计算每个人的奖学金int max_sch = parr_stu[0].scholarsip;   // 初始时的数值设置为第一个学生的数据string max_winner = parr_stu[0].name;int sum_max_sch = 0;for (auto it = parr_stu; it != parr_stu + n; it++) {sum_max_sch += (*it).scholarsip;if ((*it).scholarsip > max_sch) {max_sch = (*it).scholarsip;max_winner = (*it).name;}}cout << max_winner << "\n"<< max_sch << "\n"<< sum_max_sch << endl;
}void calScholarship(Stu* parr_stu, int n) { // 计算每个人的奖学金for (int i = 0; i < n; i++) {if (parr_stu[i].final_score > 80 && parr_stu[i].theses >= 1)parr_stu[i].scholarsip += YMSch;if (parr_stu[i].final_score > 85 && parr_stu[i].class_score > 80)parr_stu[i].scholarsip += LZSch;if (parr_stu[i].final_score > 90)parr_stu[i].scholarsip += EXSch;if (parr_stu[i].final_score > 85 && parr_stu[i].west_pro == Y)parr_stu[i].scholarsip += WESch;if (parr_stu[i].class_score > 80 && parr_stu[i].cadre == Y)parr_stu[i].scholarsip += CLSch;}
}

加速一下

提升自己写代的码效率,模块化,随用随查,oj !!!

1192: 奖学金(结构体专题)模块化相关推荐

  1. ZZULIOJ 1180-1198结构体专题 参考代码

    一共19道题 虽然是java写的,但是还是用的类似于C的结构体 下面代码供参考 每题前面标的有题号 *1180 成绩统计(结构体专题) 1181 谁的年龄最小(结构体专题) 1182 查询记录(结构体 ...

  2. ZZULIOJ: 1187: 棒棒糖(结构体专题)

    1187: 棒棒糖(结构体专题) 时间限制: 1 Sec 内存限制: 128 MB 提交: 1006 解决: 790 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 新年快到了,计算机 ...

  3. ZZULIOJ1194: 总成绩排序(结构体专题)

    1194: 总成绩排序(结构体专题) 题目描述: 有一学生成绩表,包括学号.姓名.3门课程成绩.请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序. 输入: 首先输入一个整数n(1&l ...

  4. 1183: 平面点排序(一)(结构体专题)C语言

    1183: 平面点排序(一)(结构体专题) 时间限制: 1 Sec 内存限制: 128 MB 提交: 6339 解决: 4077 [状态] [讨论版] [提交] [命题人:admin] 题目描述 平面 ...

  5. 向大佬学习C语言1198: 考试排名(二)(结构体专题)

    题目 1198: 考试排名(二)(结构体专题) 时间限制: 1 Sec 内存限制: 128 MB 提交: 3737 解决: 728ACM 国际大学生程序设计竞赛,英文全称:ACM Internatio ...

  6. 考试排名(结构体专题)

    考试排名(结构体专题) 题目描述 今天浙大研究生复试的上机考试跟传统笔试的打分规则相似,总共有n道题,每道题有对应分值,最后计算总成绩.现给定录取分数线,请你写程序找出最后通过分数线的考生,并将他们的 ...

  7. 1197: 考试排名(一)(结构体专题)

    1197: 考试排名(一)(结构体专题) 时间限制: 1 Sec  内存限制: 128 MB 提交: 59  解决: 70 [提交] [状态] [讨论版] [命题人:eilene] 题目描述 今天浙大 ...

  8. 考试排名(一)(结构体专题)

    考试排名(一)(结构体专题) 题目描述 今天浙大研究生复试的上机考试跟传统笔试的打分规则相似,总共有n道题,每道题有对应分值,最后计算总成绩.现给定录取分数线,请你写程序找出最后通过分数线的考生,并将 ...

  9. ZZULIOJ1198: 考试排名(二)(结构体专题)

    1198: 考试排名(二)(结构体专题) 题目描述: ACM 国际大学生程序设计竞赛,英文全称:ACM International Collegiate Programming Contest(ACM ...

最新文章

  1. sqlserver临时表
  2. C# 方法中的this参数
  3. Go的GOPATH与GOROOT
  4. ThinkPHP 3.2.3 视图模型的使用
  5. Hystrix简介– Hello World
  6. c语言用for编程图形,C语言编程题求解
  7. mysql_install_db is deprecated_MySQL5.7源码安装问题汇总
  8. iOS Runtime特性之关联对象
  9. 个人手写笔记,灵感收集.
  10. 存储可向外扩展无线传输
  11. Python字符串串联
  12. OpenNebula概述
  13. Linux环境安装PostgreSQL-12.2
  14. 白话空间统计三十:地统计学(1)起源
  15. R2CNN 算法笔记
  16. js图片上传(配合七牛云)
  17. Tight WCRT Analysis of Synchronous C Programs
  18. 【openlayers】ol3地图组成部分
  19. 技术文档 | 5G系统连接管理:CM空闲和CM已连接
  20. Android Studio 星座查询系统

热门文章

  1. DB2数据库备份、还原及常用命令
  2. 【干货】深度剖析,为什么一个好的微信运营胜过100个销售人员
  3. 微信小程序_今日头条
  4. 【信管2.5】项目可研(一)立项和可行性研究
  5. win2003 服务器设置 完全版
  6. Adobe Illustrator 2020 24.2.3.521 中文版 — 矢量绘图软件
  7. 设置静态IP后 mtputty无法连接问题
  8. 区块链软件开发的搭建环境
  9. 完美对接海康、大华、华为等等设备的Onvif/RTSP流媒体服务全终端无插件直播-本地安装启动...
  10. HDU 1248 寒冰王座(完全背包)