1.简单例子与测试:
#include <iostream>
using namespace std;
int main()
{
float a = 3.5555; //保留到小数点后两位
float b = ((int)((a * 100) + 0.5)) / 100.0;
cout << a << endl
<< b << endl;
int c = (a * 1) + 0.5;//保留整数,在int变量时就已经转化了整数,相当于f
cout << c << endl;
float d = (int)((a * 1000) + 0.5) / 1000.0;//保留到小数点后三位,
cout << d << endl; //要先int,再除1000
float e = (a * 1) + 0.5;
cout << e << endl;//e,f显示出了变化过程,加0.5的目的
float f = (int)((a * 1) + 0.5);
cout << f << endl;//如果是3.4555,则e=3.9,int之后仍然是3!!!!
}
2.简单题目:
题目描述
小蓝给学生们组织了一场考试,卷面总分为 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%
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
3.我的理解与代码注释:
#include <iostream>
using namespace std;
int main()
{
int num, t = 0, m = 0, n;
cin >> num;
for (int i = 0; i < num; i++)
{
cin >> n;
if (n >= 60)
{
t++;
}
if (n >= 85)
{
m++;
}
}
cout << t << endl
<< m << endl
<< num << endl
<< t / num << endl//因为是两个int运算默认int输出的,所以0.7是输出0
<< m / num << endl
<< t * 1.0 / num << endl//这样就成功了
<< m * 100.0 / num << endl
<< m * 100.0 / num << endl;//对啦,这个式子加0.5再转int就是保留整数
int a = (t * 100.0 / num * 1) + 0.5;
int b = (m * 100.0 / num * 1) + 0.5;
cout << a << "%" << endl
<< b << "%" << endl;
}
//测试数据:7 80 92 56 74 88 100 0
3.心得:
题目很简单,大部分时间花在奇怪的地方,比如测试一些数据的值是否符合我的理解。打牢C的基础至关重要,继续努力!