一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地
一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高。#include<stdio.h>mai...
一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高。
#include <stdio.h>
main()
{float m,h,sum;
int k;
for(m=100,sum=0,k=1;k<=10;k++)
{h=m/2.0;
sum=m+h;
m=h;
if(k==10)
{
printf("The height of 10th is %f m\n",h);
printf("The total distance is %f m ",sum);
}
}
}
请问程序那里有问题呢? 展开
#include <stdio.h>
main()
{float m,h,sum;
int k;
for(m=100,sum=0,k=1;k<=10;k++)
{h=m/2.0;
sum=m+h;
m=h;
if(k==10)
{
printf("The height of 10th is %f m\n",h);
printf("The total distance is %f m ",sum);
}
}
}
请问程序那里有问题呢? 展开
2个回答
展开全部
修改了一下,以下为优化后的代码,加了调试语句,自己运行并思考一下吧:
#include <stdio.h>
void main()
{
double m,h,sum;
int k;
for(h=m=100,sum=0,k=1;k<=10;k++) //开始时,h m是一样的
{
printf("%d-- h:%lf m:%lf\n", k, h,m ); //这是每次落地运行的距离和高度 弹起落下是一样的距离!
sum += m ;
m=h;
h=m/2.0;
if(k==10)
{
printf("The height of 10th is %lf m\n", h );
printf("The total distance is %lf m\n", sum );
}
}
}
#include <stdio.h>
void main()
{
double m,h,sum;
int k;
for(h=m=100,sum=0,k=1;k<=10;k++) //开始时,h m是一样的
{
printf("%d-- h:%lf m:%lf\n", k, h,m ); //这是每次落地运行的距离和高度 弹起落下是一样的距离!
sum += m ;
m=h;
h=m/2.0;
if(k==10)
{
printf("The height of 10th is %lf m\n", h );
printf("The total distance is %lf m\n", sum );
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询