【贪玩巴斯】带你刷题过蓝桥—— 2020省赛真题详解: 成绩统计(数学, 暴力) C++

【贪玩巴斯】带你刷题过蓝桥—— 2020省赛真题 单词分析(字符串, 暴力)

欢迎关注我的微信公众号:
编程之蓁

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;
}

个人心得:

本题是数学和暴力的结合。我们首先要读懂题目,并且要从输入要求中着手,来声明定义需要的变量,再根据需求进行算法的编写。最需要注意的是四舍五入以及百分号的精度的问题。

涉及知识:

  1. 四舍五入:
    我们如果需要四舍五入,那么就需要自己乘以一个小数的数来满足。
  2. 百分号
    百分号的实现就是:要在数的基础上乘以100,如果存在四舍五入就需要乘以100.0来满足精度要求。
  3. round函数
    这篇文章详细讲解了
    c++中round函数既是对小数点后一位进行四舍五入,保留整数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪玩巴斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值