1. java程序 一球从h米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第k次落
public static void main(String[] args) {
double h=100;
double sum=0;
for (int k = 1; k <=10; k++) {
sum+=h;
h=h*0.5;
if(k!=10){
sum+=h;
}
}
System.out.println(sum+","+h);
}
2. java自由落体题
发现“cloudhy”同学的程序,有点小问题,完善如下:
/**
*1. 模拟自由落体程序 程序描述:一个小球从100m高度自由落下,每次落地后反弹跳回原高度的一半,再落下。编程实现:
* 1)求小球在第5次落地时,一共经过多少m?
* 2) 第5次反弹高度多少m?
* 3) 将以上两个计算结果的输出。
*/
public class FreeFallen {
/**
* 计算第time次弹起的高度
*
* @param time 弹起的次数
*/
public static double countHeight(int time) {
double height = 100; //应该是double类型的,第三次弹起就是小数了
for (int i = 0; i < time; i++) {
height = height / 2;
}
return height;
}
/**
* 计算第time次落地后经过的距离
*
* @param time 落地的次数
*/
public static double countDistance(int time) {
double distance = 100; //总距离
double each; //每次经过的距离
for (int i = 1; i < time; i++) {
//distance += distance / 2;
each = countHeight(i-1); //每次弹起下落一回就等于上一次的高度,因为每次落地后反弹跳回原高度的一半
distance += each;
}
return distance;
}
public static void main(String[] args) {
System.out.println(countDistance(5));
System.out.println(countHeight(5));
}
}