1311 - C语言程序设计教程(第三版)课后习题6.9

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米?保留两位小数

题目输入

M N

题目输出

它在第N次落地时反弹多高?共经过多少米?保留两位小数,空格隔开,放在一行

输入/输出样例

输入格式

1000 5

输出格式

31.25 2875.00

C语言解答

#include<stdio.h>
#include<math.h>
double total(double m,int n)
{
	if(n==1)  return m;
	else return total(m,n-1)+m/pow(2,n-2);
} 
int main()
{
	int i,j;
	int n;
	double m;
	scanf("%lf%d",&m,&n);
	double gaodu=m/pow(2,n);
	double zong=total(m,n);
	printf("%.2lf %.2lf",gaodu,zong);
 } 

C++解答

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	double n,sum;
	int m;
	cin>>n>>m;
	sum=-n;
	for (int i=1; i<=m; i++)
	{
		sum+=2*n;
		n/=2;
	}
	printf("%.2lf %.2lf\n",n,sum);
	return 0;
}