描述
一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第 n 次落地时共经过了多少米?第 n 次返弹多高?
输入描述:
输入小球下落的高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球第 n 次 落地时经过的距离和第 n 次反弹的高度(保留小数点后1位)
#include <cstdio>
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
// 下落的高度和落地的次数
double h;
int n;
cin >> h;
cin >> n;
double sum=0;
for(int i = 1;i<=n;i++){
sum=sum+h+h/2.0; // 总共走的下落和反弹的路程
h=h/2.0;
}
sum=sum-h;//减去最后一次反弹的路程
printf("%.1f %.1f",sum,h);
return 0;
}
可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
%ld 表示输出long整数
%lf 表示输出double浮点数
可以在"%"和字母之间插进数字表示最大场宽。例如:
%3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,小数点占一位, 不够9位右对齐。 但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。