【问题描述】 已知一球从高空落下时,每次落地后反弹至原高度的四分之一再落下。编写一程序,从键盘输入整数n和m,求该球从n米的高空落下后,第m次落地时共经过的路程以及第m次落地后反弹的高度,并输出结果。 【输入形式】 从键盘输入整数n和m,以空格隔开。 【输出形式】 输出两行: 第一行输出总路程,保留小数点后两位; 第二行输出第m次落地后反弹的高度,保留小数点后两位。用C语言
时间: 2024-03-23 19:40:10 浏览: 420
好的,以下是一个 C 语言的实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n, m;
double height = n, distance = n, bounce;
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; i++) {
if (i == 1) {
bounce = n / 4.0;
} else {
bounce = height / 4.0;
}
height = height / 4.0;
distance += height * 2;
}
printf("%.2f\n", distance);
printf("%.2f", bounce);
return 0;
}
```
我们首先声明一个整数变量 n 和 m,一个双精度浮点数变量 height 和 distance,以及一个反弹高度 bounce。使用 scanf 函数读入 n 和 m。
我们使用一个 for 循环模拟球的落地和反弹过程。对于第一次落地,反弹高度为 n / 4.0,之后每次反弹高度为上一次的落地高度的 1/4。每次反弹后,球的高度为上一次反弹高度的 1/4。
我们在循环中累加球经过的距离,即球下落的距离和上升的距离。最后,我们使用 printf 函数输出总路程和第 m 次落地后的反弹高度。
希望这个程序能够帮助到你。
阅读全文