博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 乙级 1077
阅读量:4993 次
发布时间:2019-06-12

本文共 2426 字,大约阅读时间需要 8 分钟。

题目

    题目地址:

 

题解

    本题没什么难度,但是要注意细节问题,下面简单来说一下;

    vector 把输入的学生打分存起来,直接用算法库中的 sort 函数给它们排个序,之后直接剔除首尾两端的元素,之后简单算个平均就解决了问题;

    代码过程中需要注意的有两点:

        1. 获得一行整数输入

        使用 cin.get() 接收 '\n' 判断本行输入是否结束即可;贴一段样例代码

1 #include 
2 #include
3 using namespace std; 4 5 int main() { 6 vector
vec; 7 int n = 0; 8 cin >> n; 9 vec.push_back(n);10 while (cin.get() != '\n') {11 cin >> n;12 vec.push_back(n);13 }14 cout << endl;15 for (int i = 0; i < vec.size(); i++)16 cout << vec[i] << endl;17 18 return 0;19 }

        写这段样例的时候才发现我对while (cin.get() != '\n) 的理解存在一些偏误,说来本题的代码能AC真的是靠运气QAQ!在设计算法的时候刚好避开了这个坑;

        问题就在于——cin.get() 会把本行输入的第一个字符吞了,但是上面这段代码恰好规避了这个问题,所以在以上代码的基础上改一下,把第8、9行注释了,我们再来看这段代码

1 #include 
2 #include
3 using namespace std; 4 5 int main() { 6 vector
vec; 7 int n = 0; 8 while (cin.get() != '\n') { 9 cin >> n;10 vec.push_back(n);11 }12 cout << endl;13 for (int i = 0; i < vec.size(); i++)14 cout << vec[i] << endl;15 16 return 0;17 }

        输入一下样例以及得到的结果

31534 3143 54454 23153431435445423

        我们就可以发现,第一个数的3不见了,因为当 cin.get() 判断的过程中会把本行中的第一字符直接吞了,这是需要特别注意的问题;

    而在我代码过程中,因为第一个数直接加到了最后的结果变量上,因此相当于运行的 while(cin.get() != '\n') 是从第二个数开始,而在第二个数之前有第一个数输入结束之后的空格,因此有效地规避了这个吞字符地问题,这运气真的是没谁了。。。。。。

        2. 浮点数的除法问题

    因为除法运算之后可能不是整数,因此数据类型应特别注意

 

代码

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 int main() { 7 int n = 0, m = 0; 8 cin >> n >> m; 9 for (int i = 0; i < n; i++) {10 vector
tmp_vec;11 float out = 0;12 float stu = 0;13 int tmp;14 cin >> tmp;15 out += tmp;16 while (cin.get() != '\n') {17 cin >> tmp;18 if (tmp >= 0 && tmp <= m)19 tmp_vec.push_back(tmp);20 }21 sort(tmp_vec.begin(), tmp_vec.end());22 tmp_vec.erase(tmp_vec.begin());23 tmp_vec.erase(tmp_vec.begin() + tmp_vec.size() - 1);24 for (int j = 0; j < tmp_vec.size(); j++)25 stu += tmp_vec[j];26 stu = stu / tmp_vec.size();27 out += stu;28 out = out / 2 + 0.5;29 cout << int(out) << endl;30 tmp_vec.clear();31 }32 33 return 0;34 }

 

转载于:https://www.cnblogs.com/moujun1001/p/9683392.html

你可能感兴趣的文章
第四章 数据类型
查看>>
php-cgi.exe
查看>>
5.7 Windows常用网络命令
查看>>
防抖(Debouncing)和节流(Throttling)
查看>>
SQL Server 查询当前行、上一行、下一行合并查询
查看>>
Python 学习笔记之——用 sklearn 对数据进行预处理
查看>>
0 window DOS窗口常用指令
查看>>
c++11特性与cocos2d-x 3.0之std::bind与std::function
查看>>
ARC078 D.Fennec VS. Snuke(树上博弈)
查看>>
VIM学习笔记一
查看>>
面向对象第四单元总结
查看>>
同源策略,Jsonp实现跨域
查看>>
二叉搜索树的后序遍历序列
查看>>
纯C#的ini格式配置文件读写
查看>>
每日分享
查看>>
【干货】大数据框架整理
查看>>
年轻人,能用钱解决的,绝不要花时间(转)
查看>>
python2.7.X 升级至Python3.6.X
查看>>
VS调试方法
查看>>
jquery拖拽实现UI设计组件
查看>>