题目描述
小蓝给学生们组织了一场考试,卷面总分为 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
解题思路:
这是一道较为简单的题目,该题中只需要求出及格的和优秀的人数各为多少即可。需注意的是,及格人数中也包括优秀人数,故在算及格率的时候记得加入优秀的人数。
import java.util.Scanner;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double num = scan.nextDouble();
int[] scores = new int[(int) num];
int passNum = 0, excellentNum = 0;
for (int i = 0; i < num; i++) {
scores[i] = scan.nextInt();
if (scores[i] >= 85){
excellentNum++;
}else if (scores[i] >= 60){
passNum++;
}
}
DecimalFormat df = new DecimalFormat("0");
System.out.println(df.format(((passNum + excellentNum)/num)*100) + "%");
System.out.print(df.format((excellentNum/num)*100) + "%");
scan.close();
}
}
该题中较为苦难的一点也就是如何做到保留小数点后几位,这里用到一个DecimalFormat类,该类可以做到保留位数的功能,同时应该使得求分数的时候有一个操作数为非 int 类型。