题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入描述
输入的第一行包含一个整数 n (1≤n≤104)n (1≤n≤104),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
输入输出样例
示例
输入
7 80 92 56 74 88 100 0
输出
71% 43%
代码
import java.util.Scanner; public class mp02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("考试人数:"); int n = sc.nextInt(); double hege = 0; double youxiu = 0; System.out.println("输入学生的得分"); for (int i = 0;i < n;i++){ int score = sc.nextInt(); if (score >=60 ){ if(score >=85){ youxiu++; } hege++; } } System.out.println(Math.round(hege*100/n) + "%"); System.out.println(Math.round(youxiu*100/n) + "%"); } }
笔记
一、Math.round()
在日常开发中使用的取整函数,简单来讲就是将括号内的值+0.5,然后再向下取整。 比如Math.round(X), 1、当X为正数时,第一步先X+0.5,第二步观察得到的结果的小数点左边的数为多少,则最后的取整结果就为多少。
X为20.5时,20.5+0.5后为21.0,则最后的取整结果为21;
X为20.4时,20.4+0.5后为20.9,则最后的取整结果为20。
2、当X为负数时,第一步先X+0.5,第二步观察得到的结果的小数点左边的数为多少,并判断+0.5后得到的数大于0还是小于0,小于0则最后的取整的结果为-(小数点左边的数+1),大于0则取整结果为小数点左边的数。
X为-0.6时,-0.6+0.5后为-0.1,则最后的取整结果为-1;X为-0.3时,-0.3+0.5后为0.2,则最后的取整结果为0;X为-1.2时,-1.9+0.5后为-1.4,则最后的取整结果为-2。
以下代码理解得更清晰
console.log(Math.round(0.4)); //0 console.log(Math.round(0.5)); //1 console.log(Math.round(0.6)); //1 console.log(Math.round(-0.4)); //0 console.log(Math.round(-0.5)); //0 console.log(Math.round(-0.6)); //-1
二、Math.random()
日常开发中使用到的取随机数的函数,概念也比较简单,即系统随机得到一个0(包含)~1(不包含)之间的数,一般我们在需要获取某个范围内的随机值时会使用到该函数。 返回指定范围的随机数[m,n]的公式:Math.random()*(n-m+1)+m;
如想要返回[1,10]的随机数,则返回公式为:Math.random()(10-1+1)+1,即Math.random()11;