#includestdio.h
void main()
{
printf("请输入弹跳次数:");
scanf("%d",n);
for(;i=n;i++)
}
s=s+t;
printf("%f \n %f",s,h);
#include "stdio.h"
//函数声明,函数声明要写在main函数的前面
//hight:初始高度;number:弹跳次数
//前面的void表示无需返回值;
void sphere_bounce(double hight, int number);
int main(void)
sphere_bounce(100, 10); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//这样写就表示调用sphere_bounce()函数,函数中传入参数;
void sphere_bounce(double hight, int number) ? ? ? ? ? ? ? ? //函数定义,这里写函数的具体实现过程;
double sum = 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//定义变量sum,用于记录总共经过的距离;
for (int n = 1; n = number; n++) ? ? ? ? ? ? ? ? ? ? ? ?//循环number次
? ? sum = sum + hight; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //每一次弹跳记录到sum
printf("\n-----最终结果-----\n"); ? ? ? ? ? ? //输出最总结果
这个问题用递归很好解决,本次跳起的高度是上次跳起高度的一半,而第0次跳起的高度是100米.这次弹跳的总长度是上次跳起的总长度加上上次跳起的高度和本次跳起的高度,而第0次跳起的总长度是0米.代码如下:
public class BallJump {
public double heightOfCount(int jumpCount) {//返回第jumpCount次跳起的高度
if (jumpCount == 0) {//递归结束条件
return 100.0;
} else {
//本次跳起的高度是上次跳起的一半
public double lengthOfCount(int jumpCount) {//返回第jumpCount次跳起球经过的总长度
if (jumpCount == 0) {//递归跳出条件
return 0.0;
//这次跳起的总长度,是上次跳起的总长度加上上次跳起的高度和本次跳起的高度之和
return lengthOfCount(jumpCount - 1)
+ (heightOfCount(jumpCount) + heightOfCount(jumpCount - 1));
public static void main(String[] args) {
BallJump ball = new BallJump();
double h = ball.heightOfCount(10);
System.out.println(h);
double l = ball.lengthOfCount(10);
System.out.println(l);
程序运行的结果是:
int?main()
int?a0;?
double?sum=0.0;
double?h;
int?NUM=10;
printf("请输入球落下的起始高度\n");
scanf("%d",?a0);??//这边需要加上符
h=a0;
sum=h;
int?i;
for(i=0;iNUM-1;i++)
{?
}?
printf("到球第%d次落地时,共经过%lf米\n第%d次弹跳的高度为%lf米\n",NUM,sum,NUM,h);?//double的格式化输出为%lf,不是%d
return?0;
以上代码是按照你的代码改造的.
简化一下如下:
#define?NUM?10
double?sum?=?0.0,?h?=?0.0;
scanf("%lf",?h);
sum?-=?h;
for(i=0;iNUM;i++)
printf("到球第%d次落地时,共经过%lf米\n第%d次弹跳的高度为%lf米\n",NUM,sum,NUM,h);
尝试正确后请采纳,谢谢!
这是我曾经做过的一道类似题,希望能给你点启发.
以下是你的代码:
#includeiostream.h
#includemath.h
main()
{double s1=0;
int i,h=100;
s=s1+h; //经过的距离
cout"the distance is:"s;
coutendl;