一道基础计算题卡在 40 分,求助判题规则问题

张开发
2026/4/10 20:05:25 15 分钟阅读

分享文章

一道基础计算题卡在 40 分,求助判题规则问题
一、题目描述输入两个浮点数半径 r高度 h要求输出以下五个结果均保留两位小数圆周长 C1 2πr圆面积 Sa πr²球表面积 Sb 4πr²球体积 Va 4/3πr³圆柱体积 Vb πr²h输出格式二、第一版代码得分20 分import java.util.*; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); double r sc.nextDouble(); double h sc.nextDouble(); double pi 3.14; System.out.printf(C1%.2f%n, 2.0 * pi * r); System.out.printf(Sa%.2f%n, pi * r * r); System.out.printf(Sb%.2f%n, 4.0 * pi * r * r); System.out.printf(Va%.2f%n, 4.0 * pi * r * r * r / 3.0); System.out.printf(Vb%.2f%n, pi * r * r * h); } }问题只能通过部分测试点得分 20 分。三、第二版代码得分40 分考虑可能是精度问题将输出改为 BigDecimal 控制import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Scanner; public class Main { private static String fmt(double x) { return BigDecimal.valueOf(x) .setScale(2, RoundingMode.HALF_EVEN) .toPlainString(); } public static void main(String[] args) { Scanner sc new Scanner(System.in); double r sc.nextDouble(); double h sc.nextDouble(); double pi 3.14; double c1 2.0 * pi * r; double sa pi * r * r; double sb 4.0 * pi * r * r; double va 4.0 * pi * r * r * r / 3.0; double vb pi * r * r * h; System.out.println(C1 fmt(c1)); System.out.println(Sa fmt(sa)); System.out.println(Sb fmt(sb)); System.out.println(Va fmt(va)); System.out.println(Vb fmt(vb)); } }结果得分提升到 40 分但仍然无法通过全部测试。我现在感觉是比赛官方的OJ系统有问题。

更多文章