2020B_F成绩统计

2020c_成绩统计

  • 题目描述

小蓝给学生们组织了一场考试,卷面总分为 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%

ac

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, x, cnt1 = 0, cnt2 = 0;
	cin>>n;
	for (int i = 1; i <= n; i++) {
	cin>>x;
	if (x >= 60)	cnt1++;
	if (x >= 85)	cnt2++;
	} 
  //cout << setprecision(0) << fixed << (1.0 * cnt1 / n * 100) << "%\n" << (1.0 * cnt2 / n * 100) << "%\n";
    int result1 = 1.0 * cnt1 / n * 100;
    int result2 = 1.0 * cnt2 / n * 100;
    cout << setprecision(0) << fixed << result1 << "%\n" << result2 << "%\n";
  return 0;
}
  • wa 3/10
  • setprecision(1)加上fixed` 表示四舍五入保留小数点后保留1位 不加fixed没有则表示总有效位数为1位
  • 改写成以下两种写法 均ac!!
    • 第一种 要写result并cout<<result 那就把result设置成float而不是int
    • 第二种 要么就不要result了 直接把语句写进cout里
    • 两种写法 setprecision的作用是四舍五入保留有效位数 必不可少
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, x, cnt1 = 0, cnt2 = 0;
	cin>>n;
	for (int i = 1; i <= n; i++) {
	cin>>x;
	if (x >= 60)	cnt1++;
	if (x >= 85)	cnt2++;
	} 
  //cout << setprecision(0) << fixed << (1.0 * cnt1 / n * 100) << "%\n" << (1.0 * cnt2 / n * 100) << "%\n";
    float result1 = 1.0 * cnt1 / n * 100;
    float result2 = 1.0 * cnt2 / n * 100;
    cout << setprecision(0) << fixed << result1 << "%\n" << result2 << "%\n";
  return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, x, cnt1 = 0, cnt2 = 0;
	cin>>n;
	for (int i = 1; i <= n; i++) {
		cin>>x;
		if (x >= 60)	cnt1++;
		if (x >= 85)	cnt2++;
	} 
  cout << setprecision(0) << fixed << (1.0 * cnt1 / n * 100) << "%\n" << (1.0 * cnt2 / n * 100) << "%\n";
  return 0;
}
  • 也就是说
    • cnt1 / n * 100 是结果的整数位--注意没有四舍五入 (得到整型)
    • 1.0 * cnt1 / n * 100 是结果本身----有整数位也有小数位 (得到浮点型)
    • int result1 = 1.0 * cnt1 / n * 100; 等号右边是结果本身 但是等号左边是int型因此只是取了结果整数位 (整数=赋值=浮点型 是不对滴)
    • float result1 = 1.0 * cnt1 / n * 100; 等号右边是结果本身 等号左边是浮点型因此取的是结果本身 (浮点型=赋值=浮点型 是对滴)
posted @   跬步瑶  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示