成绩统计(20年蓝桥杯省赛题 详解)

Suzumiya Haruhi201 2023-07-13 15:54:49

题目描述

 

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。

请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。

输入描述

 

输出描述

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

输入输出样例

示例

输入

7
80
92
56
74
88
100
0

 

输出

71%
43%

 

运行限制

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

-----------------------------------------------------------------

成绩统计-bkkkkk123的代码

AC解题思路

1、首先审题,题目可以采用Java一维数组进行处理;

2、然后用循环将数据录入数组后,进行循环判断,可以先定义两个变量countPass 和 countGood然后再根据题目要求将及格人数与优秀人数存放在这两个变量中。

3、再然后用double高精度类型定义及格率和优秀率,注意这里的分母由于输入的是int类型,所以要×1.0予以转化。

2、最后,由于题目最后需要四舍五入,所以要用到java中的math库中的round取整函数,再在数字末尾拼接上%即可;

٩(๑>◡<๑)۶ ٩(๑❛ᴗ❛๑)۶ ٩(๑>◡<๑)۶

import java.util.Scanner;
import java.math.*;

public class Main {
 public static void getPass(int n,int array[]){
        int countPass = 0;//定义及格人数变量
        int countGood = 0;//定义优秀人数变量
        for(int i=0;i<n;i++){
            if (array[i]>=60){
                if (array[i]>=85){
                    countGood++;
                }
                countPass++;
            }
        }//判断循环
        double passRate = countPass/(n*1.0);//及格率(不要忘了分母是int类型需要转化)
        double goodRate =countGood/(n*1.0);//优秀率(不要忘了分母是int类型需要转化)
        System.out.println(Math.round(passRate*100)+"%");
        System.out.println(Math.round(goodRate*100)+"%");//因为最后输出的是百分比,故*100
    }
//定义getPass()计算函数
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int array[] = new int[n];
        for(int i=0;i<n;i++){
            array[i] = scan.nextInt();
        }//录入数据
        getPass(n,array);
        scan.close();
    }
}
//结束

 

...全文
202 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

43

社区成员

发帖
与我相关
我的任务
社区描述
西师学习小分队
javac++ 高校 四川省·南充市
社区管理员
  • Easenyang
  • 陌上花开0
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧