成绩分析

114 阅读2分钟

「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」。

题目描述

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。 如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。 请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。

输入描述

输入的第一行包含一个整数 n (1≤n≤104)n\ (1 \leq n \leq 10^4)n (1≤n≤104),表示考试人数。 接下来 nnn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述

输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。

输入输出样例

示例

输入

7
80
92
56
74
88
100
0

输出

71%
43%

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

解题思路:

  1. for循环读取所有成绩。
  2. 累计后乘100再除去总人数。
  3. 利用Math.round();取整方法取整。可以利用口诀记忆内容: 四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一!
  4. 输出百分比
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        double[] a = new double[2];
        for(int i = 0;i < num;i++){
          double tmp = scan.nextDouble();
          if(tmp >= 60)
            a[0]++;
          if(tmp >= 85)
            a[1]++;
        }
       
        // Math.round();取整方法
        // 四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一!
        double tmp = Math.round(a[0]*100/num);
        double tmp_ = Math.round(a[1]*100/num);
        System.out.println((int)tmp+"%");
        System.out.println((int)tmp_+"%");
        scan.close();
    }
}

PS:

  1. 要注意成绩的数据类型要为double。
  2. 要注意强制数据类型转化之间,会存在数据误差