解题思路:
注意事项:
参考代码:
import java.text.DecimalFormat; import java.util.Scanner; public class Main { /* * 使用一张纸和一把剪刀,你可以用以下方式剪下两个面来形成一个圆柱体: 水平切割纸张(平行于短边),得到两个矩形部分。 从第一部分开始,切出一个最大半径的圆。圆圈将形成圆柱体的底部。 卷起第二部分,使其周长与圆的周长相等,并将卷的一端连接到圆上。请注意,卷可能有一些重叠部分,以便获得所需的周长。 给定纸张的尺寸,你能计算出一个圆柱体的最大可能体积吗?这个圆柱体可以用上面描述的程序来构造。 输入 输入由几个测试用例组成。每个测试用例由两个数字w和h组成( 1 ≤ w ≤ h ≤ 100 ),表示纸张的宽度和高度。 最后一个测试用例后面跟着一行包含两个零的代码。 输出 对于每个测试案例,用最大可能体积的圆柱体打印一行。将这个数字四舍五入到小数点后3位。 * */ public static void main(String args[]) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { double w = scanner.nextDouble();//宽 double h = scanner.nextDouble();//高 if ( w==0 || h==0) break; if (w > h) {//如果宽大于高,则交换两者的值 double temp; temp = w; w = h; h = temp; } // DecimalFormat df = new DecimalFormat("##.000");//将结果保留三位小数 double result01 = situation01(w, h); double result02 = situation02(w, h); if (result01 >= result02) { System.out.println(String.format("%.3f", result01));//保留三位小数的第二种方法 } else { System.out.println(String.format("%.3f", result02)); } } } public static double situation01(double w, double h) {//情况1,需要判断r*2和w的大小 double v = 0; double r = h / (2 * (Math.PI + 1)); r = r*2>w?w/2:r; v = Math.PI * (Math.pow(r, 2)) * w; return v; } public static double situation02(double w, double h) {//情况2 double v = 0; double r = w / (2 * Math.PI); v = Math.PI * Math.pow(r, 2) * (h - 2 * r); return v; } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:729 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:506 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:643 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:376 |
A+B for Input-Output Practice (V) (C语言代码)浏览:625 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:546 |
震宇大神的杀毒软件 (C语言代码)浏览:1080 |
淘淘的名单 (C语言代码)浏览:1228 |
输入输出格式练习 (C语言代码)浏览:752 |
排序算法(选择,插入,冒泡)浏览:775 |