这道题用C语言怎么编写,谢谢!不甚感激,我是大一的,望能够讲的明摆着,谢谢,不甚感激!

如题所述

看代码注释:

#include <stdio.h>
int main()
{
 float sum = 0;                 /* 经过的总路程, 初始值0 */
 float hight = 100;             /* 弹起的高度,初始值100 */
 const int count = 10;          /* 要落地的次数为常量10 */
 int i;                         /* 计数器 */
 for (i = 0; i < count; i++) 
 {
  if (i == 0)
  { /* 第一次落地是直接落下,没有弹起,所以总路程不用乘2 */
   sum += hight;
  }
  else
  { /* 后面的落地都是先弹起,再落地,所以总路程需要弹起得高度乘2 */
   sum += hight * 2;
  }
  hight = hight / 2;    /* 每次弹起得高度为上次的一半 */
 }
 /* 输出结果,小数保留4位 */
 printf("第10次落地经过的总路程: %.4f\n弹起得高度为: %.4f\n", sum, hight);
 return 0;
}

运行结果:

追问

大神,忘了问下,怎么说第一次是直接落地没有弹起??不理解啊!!第一次会弹起?,

追答

厄,是这样,第一次落地是直接从100米高处落下的(至于怎么到100米高度上去的,这个就得问出题老师了^_^),而落地之后再弹起然后落地走过的距离,我们是把它计算到第二次落地中的。
因为题目要求是计算第10次落地时走过的距离,而没有要求10次落地再弹起得距离,所以采用目前这种算法感觉方便一点。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-20
#include <stdio.h>
void main ()
{
float h1=100,sum=0,i,h2=0;
for (i=1;i<=10;i++)
{
sum+=h1+h2;//基本的累加公式等同于sum=sum+(h1+h2)
h1/=2;//h1为落地位移,初始值为100,每次减少一半
h2=h1;//h2为弹起位移,初始值为0
}
printf ("总共位移:%f\n最后一次弹起高度:%f\n",sum,h2);
}本回答被网友采纳
第2个回答  2013-11-20
#include <stdio.h>
main()
{
int i;
float x=0,h=100.0;
for(i=1;i<=9;i=i++)
{
h=h/2;
}
printf("第10次落地的高度:%f\n",h);
h=100.0;
for(i=1;i<=9;i=i++)
{
h=h/2;
x=x+h*2;
}
printf("球经过的总长度:%f\n",x+100.0);
}