欢迎关注我的微信公众号:
编程之蓁
ID:
bianchengzhizhen
及时分享算法、计算机科学以及游戏编程内容
本人CSDN博客主页:
https://blog.csdn.net/D16100?spm=1000.2115.3001.5343
欢迎互相交流学习
————————————————
题目:成绩统计
题目:
题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入描述
输入的第一行包含一个整数 n (1≤n≤10的4次方)
),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
输入输出样例
示例
输入
7
80
92
56
74
88
100
0
输出
71%
43%
运行限制
最大运行时间:1s
最大运行内存: 256M
C++源程序:
#include<iostream>
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main()
{
int stuNum = 0; // 根据输入描述声明定义输入变量
cin >> stuNum;
int stuScore[stuNum]; // 声明一个存储成绩的数组
int countPass = 0,countExcellent = 0; // 定义记录成绩及格和优秀的人数的值
for(int i = 0; i < stuNum; i++)
{
cin >> stuScore[i];
if(stuScore[i] >= 60)
countPass++;
if(stuScore[i] >= 85)
countExcellent++;
}
float newPass = countPass * 100.0 / stuNum * 1.0; // 此处注意精度问题,乘以100.0 一是为了转换精度四舍五入避免出错,二是因为百分号的添加就是要扩大乘以100
float newExcellent = countExcellent * 100.0 / stuNum * 1.0;
//输出语句
cout << round(newPass) << "%" << endl << round(newExcellent) << "%" ;
return 0;
}
个人心得:
本题是数学和暴力的结合。我们首先要读懂题目,并且要从输入要求中着手,来声明定义需要的变量,再根据需求进行算法的编写。最需要注意的是四舍五入以及百分号的精度的问题。
涉及知识:
- 四舍五入:
我们如果需要四舍五入,那么就需要自己乘以一个小数的数来满足。 - 百分号
百分号的实现就是:要在数的基础上乘以100,如果存在四舍五入就需要乘以100.0来满足精度要求。 - round函数
这篇文章详细讲解了
c++中round函数既是对小数点后一位进行四舍五入,保留整数。