这是个编程结合数学的问题,编程思路很简单,运用一个循环就好了,重点在于计算反弹总共经过多少米(第一次循环加一百米,之后的循环每次要加两倍)。以下是具体代码:
#include
#include
#include
main()
{
float high=100,t=100;
int i,n;
printf("Input:\n");
scanf("%d",&n);
for(i=0;ihigh=high/2;
t+=2*high;
}
t-=2*high;
printf("%d times:\n",n);
printf("%.3f\n",t);
printf("%.3f\n",high);
system("pause");
}
#include
main()
{float height=100.0,sum_height=100;
int i;
for(i=1;i<10;i++) {
height=height/2;
sum_height+=height*2;
}
printf("%fm\n",sum_height);
printf("%fm\n",height);
return 0;
}
第一次从100米高落下。
以后都是弹上落下所以乘以2
#include
void main()
{float m=100.0,n=0,sum=0;
int i;
for(i=1;i<=10;i++) {
n=m/2;//m为初始高度,n为每次谈起的高度
sum=sum+m+n; //sum初始值为0
m=n;//变化下一次的弹起的初始高度
}
printf("%f\n",sum);
printf("%f\n",n);
system("pause");
}
再说下你的程序,第一,你的逻辑就有错误,你的sum_height只为每次的下落的高度+弹起的高度,以前的根本加进去。第二,我也不明白你为什么要加clrscr()这个函数。
错在for循环里,你这样赋值sum_height=(3/2)height 应该是sum_height+=height;你试试看。