一 . 成绩分析
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入描述
输入的第一行包含一个整数 n\ (1 \leq n \leq 10^4)n (1≤n≤104),表示考试人数。
接下来 nn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
输入输出样例
示例
输入
7
80
92
56
74
88
100
0
输出
71%
43%
题目很简单,主要是最后的 输出容易出错,这里运用函数快速取整
- ceil 向上取整的时候,正数,则直接将当前 整数加一;负数,则将整数后面的数据抹除;整数,则不变。eg.ceil(l/17) ceil(2.3)=3 ceil(-2.6)=-2
- floor下取整的时候,正数,则取其整数部位,抹除小数部位;负数,则取其整数加一;整数,则不变 或int强制转换 floor(2.3)=2 floor(-2.6) = -3
- round 四舍五入的时候,正数,小数位大于5,则整数位加一,小数位小于5,则整数位不变,抹除小数位;负数,小数位小于5,则整数位不变,抹除小数位,小数位大于5,则整数位加一;整数,则不变
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int n,m,ant=0,ans=0,sum1=0,sum2=0;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>m;
if(m>60||m==60)
{
sum1+=m;
ant++; //记录及格个数
}
if(m>85||m==85)
{
sum2+=m;
ans++; //记录优秀个数
}
}
//调用round()函数,四舍五入
int x=round((float)ant/n*100); //及格率,记得*100,float强转类型,将int转化为float
int y=round((float)ans/n*100); //优秀率
printf("%d%\n",x);
printf("%d%\n",y);
return 0;
}
二 . 门牌制作(填空)
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020位住户,门牌号从 1到 2020编号。
小蓝制作门牌的方法是先制作 0到 9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2个字符 1,1个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t=0;
string s;
for(int i=1; i<=2020; i++)
{
s=to_string(i); //运用to_string()将数字转化为字符串
t+=count(s.begin(), s.end(), '2');
// count() 这个函数作用是统计在一定范围内某一值出现的次数,现在遍历字符串,看2出现的次数
}
cout<<t;
return 0;
}