#include
int main()
{
int a0;
double sum=0.0;
double h;
int NUM=10;
printf("请输入球落下的起始高度\n");
scanf("%d", &a0); //这边需要加上&符
h=a0;
sum=h;
int i;
for(i=0;i{
h /= 2; //这边直接这样写就行,因为h本身定义的时候就是double型,它不会自动丢失精度变为int的
sum += 2*h;
}
h/=2; //这边不要忘记需要再除以2,因为最后一次弹上去的高度还没算
printf("到球第%d次落地时,共经过%lf米\n第%d次弹跳的高度为%lf米\n",NUM,sum,NUM,h); //double的格式化输出为%lf,不是%d
return 0;
}
以上代码是按照你的代码改造的。
简化一下如下:
#include
#define NUM 10
int main()
{
double sum = 0.0, h = 0.0;
printf("请输入球落下的起始高度\n");
scanf("%lf", &h);
sum -= h;
int i;
for(i=0;i{
sum += 2*h;
h /= 2;
}
printf("到球第%d次落地时,共经过%lf米\n第%d次弹跳的高度为%lf米\n",NUM,sum,NUM,h);
return 0;
}
尝试正确后请采纳,谢谢!
#include
using namespace std;
const int NUM=10;
int main()
{
int a0;//初始高度
double sum=0.0;
double h;
//a(n)=a0*(1/2)^n;
cin>>a0;
h=a0;
sum=h;
for(int i=0;i
h*=(1*1.0)/2;
sum+=2*h;
}
cout<<"the all height is "<
}