你要知道在c里面整形除以整形得到的还是整形,你这里除了10次2,2的10次方1024,已经大于a的值100了,所以得到的就是整形的0,你这里a的值依次是50,25,12(不是12.5),6,3,1(不是1.5),0(不是0.5),0,等等,是不会出现小数的。所以你的a应该声明成浮点型的才对。
共经过, 再弄一变量int B = 0; //存总路程
for (i=0; i<10; i++)
{
b = b + a; //到地那点
a = a / 2;
b = a + a; //反弹回去的顶点
}
(b = b + a; //反弹回去的顶点)写错了,更正
首先a声明成整数,因此a/2将进行整除,最后将出现1/2=0(整除的结果),这是你程序实现中出现的第一个问题,第二个问题是你没有求算共经过多少米,我的代码如下:
#include
int main(int argc, constchar * argv[])
{
// insert code here...
int i = 0;
double initHeight = 100.00, totalDistance = 0.0;
// 第一次落地的高度为初始高度
totalDistance = 100.0;
for (i = 1 ; i < 10; i++) {
// 反弹的高度为前一次高度的1/2,但是由于反弹后会落下,因此第i+1次落地过程经过的高度为前一次高度,此处为第i+1次落地后经过距离的加算
totalDistance += initHeight;
initHeight = initHeight / 2;
}
// 第10次落地后反弹的高度
initHeight = initHeight / 2;
printf("total distance:%f\n", totalDistance);
printf("Height after 10 times:%f\n", initHeight);
return0;
}
a是整形的啊 肯定是0啊