R7-23 作品评分(JAVA)

本文介绍了全国中小学生Scratch作品大赛的线上评分过程,展示了如何利用程序设计技巧自动计算去掉最高分和最低分后的作品平均分。通过两种不同的代码实现,详细解读了如何高效处理评委打分并确保公正性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。

输入格式:

输入数据包括两行: 第一行为n,表示n个评委,n>2。 第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。

输出格式:

输出平均分,结果保留两位小数。

输入样例:

6
10 9 8 7.9 9 9.5

输出样例:

8.88

 方法一:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        double sum = 0;
        double maxx = 0;
        double minn = 101001;
        in.nextLine();
         //  输入回车符
        String line = in.nextLine();
         //  一次性读入一串,加快运行效率
        String f[] = line.split(" ");
        for (int i = 0;i < n; i ++ ) {
            double x = Double.parseDouble(f[i]);
            if(maxx < x) maxx = x;
            if(minn > x) minn = x;
            sum += x;
        }
        System.out.printf("%.2f",(sum - maxx - minn) / (n - 2));
    }
}

方法二:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();//接受空白符
        double sum = 0;
        List<Double> nums = new ArrayList<>();//顺序表
        String[] line = in.nextLine().split(" ");//以“ ”分隔分别放在这个String类型的数组中
        for (String str : line) {//遍历
            nums.add(Double.valueOf(str));//存入顺序表
        }
        Collections.sort(nums);//排序
        nums.remove(0);//删除
        nums.remove(nums.size() - 1);
        for (double num : nums) {
            sum += num;
        }
        System.out.println(String.format("%.2f", sum / (n - 2)));
    }
}
R7-28 完全二叉树的层序遍历是指按照从上到下、从左到右的顺序访问完全二叉树的所有节点。在Java中,我们可以使用队列数据结构来辅助完成这个过程,因为完全二叉树的特点是每一层都是满的,除了最后一层外。 下面是一个简单的Java代码示例,用于层序遍历完全二叉树: ```java import java.util.LinkedList; import java.util.Queue; class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class LevelOrderTraversalOfCompleteBinaryTree { public List<Integer> levelOrder(TreeNode root) { if (root == null) return new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); List<Integer> result = new ArrayList<>(); while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode node = queue.poll(); result.add(node.val); // 如果当前节点有右孩子并且还没入队,添加右孩子 if (node.right != null) queue.offer(node.right); // 如果当前节点有左孩子并且还没入队,添加左孩子 if (node.left != null && i != size - 1) queue.offer(node.left); // 注意这里是i != size - 1,避免重复添加左孩子 } } return result; } } ``` 在这个代码里,我们首先将根节点加入队列,然后在一个循环中,每次取出一层的所有节点,访问它们,并将它们的左右子节点(如果存在且未被访问过)依次加入队列。这样就能保证按照层次顺序遍历整个完全二叉树。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值