PTA-成绩录入时的及格与不及格人数统计

题目

编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。


输入格式

从键盘中输入学生人数n

从键盘中输入第1个学生的成绩

从键盘中输入第2个学生的成绩

从键盘中输入第n个学生的成绩

(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)


输出格式

显示及格总人数

显示不及格总人数


例题

输入样例:
在这里给出一组输入。例如:

3
100
30
60

输出样例:
在这里给出相应的输出。例如:

2
1

输入样例:
在这里给出一组输入。例如:

2
200
69
30
输出样例:
在这里给出相应的输出。例如:

200invalid!
1
1

解答

题目指明需要抛出异常解决,那就按照异常方法设计咯。别的先不管,想一下正常输入,很简单,if判断,及格的话及格人数加1,遍历完后,总人数减去几个人数就是不及格人数。异常解决两个问题一个是输出错误信息提示,一个是此次遍历作废,剩下遍历人数保持不变

写一个判断及格的方法

这里先写了一个类,也可以不写直接写方法即可

class Gradequalify {

    int grade;
    public boolean qualify(int g) throws OverException {
        if(g >= 60 && g <= 100){
            return true;
        }else if (g >= 0 && g < 60){
            return false;
        }else {
            throw new OverException(g + "invalid!");
        }
    }
}

自定义异常类

题目简单,需要实现的地方不多,直接构造异常类对象即可

class OverException extends Exception {

    /**
     * 发现输入成绩大于100或者是小于0,抛出这个异常
     */
    public OverException(String message) {
        super(message);
    }
}

主函数


public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        Gradequalify gradequal = new Gradequalify();
        int quality = 0;

        for (int i = 0; i < num; i++){
            int grade = sc.nextInt();

            try {
                boolean flag = gradequal.qualify(grade);
                if (flag) {
                    quality++;
                }
            }catch (Exception e) {
                i--;
                System.out.println(e.getMessage());
            }

        }

        System.out.println(quality);
        System.out.println(num - quality);

    }


}

源程序代码

package com.ten;

import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/3 23:24
 */

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        Gradequalify gradequal = new Gradequalify();
        int quality = 0;

        for (int i = 0; i < num; i++){
            int grade = sc.nextInt();

            try {
                boolean flag = gradequal.qualify(grade);
                if (flag) {
                    quality++;
                }
            }catch (Exception e) {
                i--;
                System.out.println(e.getMessage());
            }

        }

        System.out.println(quality);
        System.out.println(num - quality);

    }


}

class Gradequalify {

    int grade;
    public boolean qualify(int g) throws OverException {
        if(g >= 60 && g <= 100){
            return true;
        }else if (g >= 0 && g < 60){
            return false;
        }else {
            throw new OverException(g + "invalid!");
        }
    }
}


class OverException extends Exception {

    /**
     * 发现输入成绩大于100或者是小于0,抛出这个异常
     */
    public OverException(String message) {
        super(message);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题乍一看很难懂,实际上是在问:如何统计一批学生的平均成绩,而且不含有格外的人数(例如缺考、退课)? 答案就是使用“平均数”这个概念,但是要去掉那些无效的数据。如果是计算班级的平均成绩,就将缺考、退课的学生排除在外。如果是计算整个学校的平均成绩,就要将所有班级的无效数据一起去掉。 ### 回答2: 假设有一批学生共有n名,他们的成绩分别为s1, s2, ..., sn。我们可以通过求和s1+s2+...+sn,再除以n,得出这批学生的平均成绩。具体公式为: 平均成绩 = (s1+s2+...+sn) / n 如果要求这批学生中不及格人数,我们需要先确定什么标准算是不及格。一般来说,考试成绩低于60分就算是不及格。所以我们可以遍历每一个学生的成绩统计出低于60分的人数,具体算法步骤如下: 1. 初始化不及格人数变量fail为0 2. 遍历每一个学生的成绩,如果小于60分,就让fail变量加1 3. 最后fail就是这批学生中的不及格人数 具体的伪代码如下: fail = 0 for i in range(n): if score[i] < 60: fail += 1 综合起来,我们可以写出如下的Python代码来求解这个问题: # 输入一批学生的成绩 scores = input().split() # 将成绩转换为数字类型 scores = [float(s) for s in scores] # 计算平均成绩 avg_score = sum(scores) / len(scores) # 统计及格人数 fail = 0 for score in scores: if score < 60: fail += 1 # 输出结果 print('平均成绩:{:.2f}, 不及格人数:{}'.format(avg_score, fail)) 当然,这只是一个简单的示例代码,实际应用中可能需要考虑更多的特殊情况,例如输入数据的格式错误、数据量过大等。但是这个代码可以作为一个基础模板来进行扩展和优化。 ### 回答3: 如何计算一批学生的平均成绩和不及格人数? 在统计学中,平均数和频数是最基本的概念。平均数是指一组数的总和除以这组数的个数,即平均值=总和÷个数。而频数则是指在一组数据中出现某个数值的次数。因此,我们可以通过以下方法来计算一批学生的平均成绩和不及格人数: 1. 首先,确定一批学生的成绩数据。可以是一组整数、小数或百分数,也可以是一个数据表格或电子表格。 2. 计算这批学生的平均成绩。将所有学生成绩加起来,然后除以学生的数量,就可以得到平均成绩。 例如,假设班里有30名学生,他们的成绩分别是:70、80、90、60、50、75、85、95、65、55、80、75、90、85、70、60、80、75、85、90、95、60、70、80、85、90、75、65、50、60。则这批学生的平均成绩为: (70+80+90+60+50+75+85+95+65+55+80+75+90+85+70+60+80+75+85+90+95+60+70+80+85+90+75+65+50+60) ÷ 30 = 76.5 因此,这批学生的平均成绩为76.5。 3. 计算不及格人数。不及格通常是指成绩低于60分的学生。因此,我们只需统计这批学生中有多少人的成绩低于60分即可。 例如,这批学生中成绩低于60分的有10人,则不及格人数为10人。 以上就是计算一批学生的平均成绩和不及格人数的基本方法。当然,在实际统计过程中还有很多细节需要注意,例如对数据进行清洗、去除异常值、使用不同的平均数计算方法等等,这些都需要根据具体情况来选择使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值