标题:自由落体球反弹问题 编译无错 运行错误 而且停不了
只看楼主
叶子1030
Rank: 2
来 自:西安
等 级:论坛游民
帖 子:12
专家分:14
注 册:2016-4-19
结帖率:40%
已结贴  问题点数:20 回复次数:7 
自由落体球反弹问题 编译无错 运行错误 而且停不了
设一球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹的高度是多少?该球经过多少次反弹后停止运动,此时该球的运动路程是多少(精确至小数点后第6位数字)?

#include<stdio.h>
#include<math.h>
#define MAX 32
int main()
{
    double a[MAX];
    int i=0;
    double sum=0;
   
    for(i=0;i<MAX;i++)
    {
        a[i]=100*pow(1/2,i);
        sum+=a[i];
        if(i=9)
        {
            printf("下落第十次时,经过路程为%f,反弹高度为%f.\n",2*sum-100,a[9]);
        }
        if(a[i]<0.000001)
        {
            printf("经过%d次,反弹停止。运动路程为%f。\n",i,2*sum-100);
            return 0;
        }
    }
   
}

[此贴子已经被作者于2016-4-19 23:31编辑过]

搜索更多相关主题的帖子: 自由落体 include double 小数点 而且 
2016-04-19 23:15
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
if(i=9)    if(i==9) 这里有错哦

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-19 23:56
叶子1030
Rank: 2
来 自:西安
等 级:论坛游民
帖 子:12
专家分:14
注 册:2016-4-19
得分:0 
回复 2楼 zhulei1978
改成这样还是不行诶。。

#include<stdio.h>
#include<math.h>
#define MAX 32
int main()
{
    double a[MAX];
    int i=0;
    double sum=0;
   
    for(i=0;i<MAX;i++)
    {
        a[i]=100*pow(1/2,i);
        sum+=a[i];
        if(i==9)
        {
            printf("下落第十次时,经过路程为%f,反弹高度为%f.\n",2*sum-100,a[9]/2);
        }
        if(a[i]<0.000001)
        {
            printf("经过%d次,反弹停止。运动路程为%f。\n",i,2*sum-100);
            return 0;
        }
    }
   
}
2016-04-20 21:57
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
你那个MAX为什么要定义成32

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-21 01:57
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:10 
用那个

while(1){

         a[i]=100*pow(1/2,i);
         sum+=a[i];
         if(i==9)
         {
             printf("下落第十次时,经过路程为%f,反弹高度为%f.\n",2*sum-100,a[9]);
         }
         if(a[i]<0.000001)
         {
             printf("经过%d次,反弹停止。运动路程为%f。\n",i,2*sum-100);
             break;
          }
          i++;
      

}
return 0;

你试试这样可不可以

[此贴子已经被作者于2016-4-21 04:07编辑过]


其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-21 02:08
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 


为什么只运行两次,在运行到i=1时,a[i]=0

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-21 04:40
z3147393952
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2016-4-21
得分:10 
回复 楼主 叶子1030
#include <stdio.h>
int main(void)
{
    int i, n;
    double distance, height;
 distance = height=100;
 for(i=1;i<=9;i++){
   height = height / 2;
   distance = distance + height * 2;
 }
       printf("%.5f %.5f", distance, height/2);
       return 0;
   }
2016-04-21 07:02
z3147393952
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2016-4-21
得分:0 
回复 7楼 z3147393952
#include <stdio.h>
int main(void)
{
    int i, n;
    double distance, height;
 distance = height=100;
 for(i=1;i<=9;i++){
   height = height / 2;
   distance = distance + height * 2;
 }
       printf("%.6f %.6f", distance, height/2);
       return 0;
   }
这个是对的
2016-04-21 07:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463858-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.680341 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved