C语言,一个练习题问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:44:48
#include<stdio.h>
void main()
{
float sn=100,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+hn*2;
hn=hn/2;
}
printf("共经过%f m.\n",sn);
printf("第10次反弹%f m.\n",hn);
}
我想不明白,为什么hn要*2,还有hn=hn/2这一步,
for里面的循环变量n到底在哪,是sn的n?应该不是吧
希望哪位朋友帮忙解释一下,可能的话最好把代码解释一遍
Thanks~!

这应该是一道跟物理有关的题目,我猜得不错的话,题意是这样的:有一个钢球第一次从100米的高处落下,第二次弹起的高度是前一次高度的一半,那么第三次弹起的高度是25米,第四次是12。5米,这样反复十次,求钢球经过的路程和第十次钢球弹起的高度。我们假设钢球从地上弹起的高度为hn,那么它落下的距离也是hn,所以它一弹一落就走了两个hn,所以本次弹起进过的路程就是hn*2,for李曼的循环变量是控制弹起的次数,你的题目是循环到第十次。

n是次数,是自己控制的,sn是总路程,是根据你设定的n来决定的!

循环变量n就是n,它的初值你定义为2,它还必须小于等于2,它每进行一次循环,它的值要加1
n=2;n<=10;n++
最后当n的值为11时,它不满足条件n<=10,for循环结束
这里n跟sn无关,它们是2个不同的变量

#include<stdio.h>
void main()
{
float sn=100,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+hn*2; /*第N次落地时经过的总距离*/
hn=hn/2; /*第N次落地后弹起的高度*/
}
printf("共经过%f m.\n",sn);
printf("第10次反弹%f m.\n",hn);
}
我想不明白,为什么hn要*2,还有hn=hn/2这一步,
for里面的循环变量n到底在哪,是sn的n?应该不是吧
希望哪位朋友帮忙解释一下,可能的话最好把代码解释一遍
Thanks~!

hn*2;因为物体弹起hn还要落回去hn,就要*2了
当然不是,n就是n,sn就是sn,

有没题目

#include<stdio.h>
void main()
{
float sn=100,hn=sn/2; //高度为100,hn=50;
int n;