PAT 乙级 1077
题目
题目地址:PAT 乙级 1077
题解
本题没什么难度,但是要注意细节问题,下面简单来说一下;
vector 把输入的学生打分存起来,直接用算法库中的 sort 函数给它们排个序,之后直接剔除首尾两端的元素,之后简单算个平均就解决了问题;
代码过程中需要注意的有两点:
1. 获得一行整数输入
使用 cin.get() 接收 '\n' 判断本行输入是否结束即可;贴一段样例代码
#include <iostream>
#include <vector>
using namespace std; int main() {
vector<int> vec;
int n = ;
cin >> n;
vec.push_back(n);
while (cin.get() != '\n') {
cin >> n;
vec.push_back(n);
}
cout << endl;
for (int i = ; i < vec.size(); i++)
cout << vec[i] << endl; return ;
}
写这段样例的时候才发现我对while (cin.get() != '\n) 的理解存在一些偏误,说来本题的代码能AC真的是靠运气QAQ!在设计算法的时候刚好避开了这个坑;
问题就在于——cin.get() 会把本行输入的第一个字符吞了,但是上面这段代码恰好规避了这个问题,所以在以上代码的基础上改一下,把第8、9行注释了,我们再来看这段代码
#include <iostream>
#include <vector>
using namespace std; int main() {
vector<int> vec;
int n = ;
while (cin.get() != '\n') {
cin >> n;
vec.push_back(n);
}
cout << endl;
for (int i = ; i < vec.size(); i++)
cout << vec[i] << endl; return ;
}
输入一下样例以及得到的结果
我们就可以发现,第一个数的3不见了,因为当 cin.get() 判断的过程中会把本行中的第一字符直接吞了,这是需要特别注意的问题;
而在我代码过程中,因为第一个数直接加到了最后的结果变量上,因此相当于运行的 while(cin.get() != '\n') 是从第二个数开始,而在第二个数之前有第一个数输入结束之后的空格,因此有效地规避了这个吞字符地问题,这运气真的是没谁了。。。。。。
2. 浮点数的除法问题
因为除法运算之后可能不是整数,因此数据类型应特别注意
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; int main() {
int n = , m = ;
cin >> n >> m;
for (int i = ; i < n; i++) {
vector<int> tmp_vec;
float out = ;
float stu = ;
int tmp;
cin >> tmp;
out += tmp;
while (cin.get() != '\n') {
cin >> tmp;
if (tmp >= && tmp <= m)
tmp_vec.push_back(tmp);
}
sort(tmp_vec.begin(), tmp_vec.end());
tmp_vec.erase(tmp_vec.begin());
tmp_vec.erase(tmp_vec.begin() + tmp_vec.size() - );
for (int j = ; j < tmp_vec.size(); j++)
stu += tmp_vec[j];
stu = stu / tmp_vec.size();
out += stu;
out = out / + 0.5;
cout << int(out) << endl;
tmp_vec.clear();
} return ;
}
PAT 乙级 1077的更多相关文章
- PAT 乙级 1077 互评成绩计算 (20)
在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平 ...
- PAT乙级:1077 互评成绩计算 (20分)
PAT乙级:1077 互评成绩计算 (20分) 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
- PAT 乙级 1059
题目 题目地址:PAT 乙级 1059 题解 开始我是从暴力循环的角度考虑这道题,大概计算了一下时间复杂度应该不会超,但是很不幸没有通过,时间超限:之后考虑搜索算法可能优化不太好,因此就把输入的序列先 ...
随机推荐
- es6入门5--class类的基本用法
在ES6之前,准确来说JavaScript语言并无类的概念,却有模拟类的做法.相比在类似java这类传统面向对象语言中通过类来生成实例,js则通过构造函数模拟类来生成实例. 这是因为在JS设计初期,作 ...
- sonar扫描android项目配置 mac版
一. 下载安装 JDK8以上 SonarQube SonarQube Scanner 1. 解压缩SonarQube和SonarQube Scanner,直接运行SonarQube中bin目录下 ...
- 牛客假日团队赛2 G.CountyFairEvents
链接: https://ac.nowcoder.com/acm/contest/924/G 题意: Farmer John has returned to the County Fair so he ...
- 长春理工大学第十四届程序设计竞赛(重现赛)I.Fate Grand Order
链接:https://ac.nowcoder.com/acm/contest/912/I 题意: Fate Grand Order是型月社发行的角色扮演类手机游戏,是著名的氪金抽卡"垃圾&q ...
- 批量插入,update
#####setting 1create table t as select * from all_objects where 1 =2; ###.模拟逐行提交的情况,注意观察执行时间DECLAREB ...
- Spring Security 5中的默认密码编码器
1.概述 在Spring Security 4中,可以使用内存中身份验证以纯文本格式存储密码. 对版本5中的密码管理过程进行了重大改进,为密码编码和解码引入了更安全的默认机制.这意味着如果您的Spri ...
- csrf攻击实例
CSRF 攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作.比如说,受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求 ht ...
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(下)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入 ...
- 30个提高Web程序执行效率的好经验
尽量避免使用DOM.当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用.使用设置innerHTML的方法来替换document.createElement/append ...
- pixhawk 固件Firmware内执行make px4fmu-v2_default 编译报错解决办法
执行下列指令报错 make px4fmu-v2_default /bin/sh: 1: Tools/check_cmake.sh: Permission denied Makefile:44: Not ...