【C++】小球弹跳高度问题,求大神用分支、循环做这道题~

2024-11-20 21:11:44
推荐回答(2个)
回答1:

#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;
}


尝试正确后请采纳,谢谢!

回答2:

#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 "< cout<<"the tenth height is "< return 0;
}