Mister-小方


私信TA

用户名:1104986125

访问量:238555

签 名:

如此英俊为哪般

等  级
排  名 3
经  验 35648
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

TA的其他文章

解题思路以及注意事项:

  1. 用for()循环来模拟反弹的过程,注意不要忘了最后的反弹反弹高度以及开始落下的距离,其他的中间过程都是两倍的反弹高度。

  2. 注意不要弄错了scanf()里面的格式。

  3. 可以用double进行下强制转换。

实例代码:

#include"stdio.h"
int main()
{
    int size,i;
    double iterm=0,sum=0,high;                   //一定要初始化,不然后果不堪设想                             
    scanf("%lf %d",&high,&size);
    iterm=high;
    for(i=0;i<size;i++)                          //循环的开始和结束注意一下
    {
        if(i==0)                                 //加上最后的反弹
            sum+=iterm;                                
        else sum+=2*iterm;                       //中间过程
         iterm=(double)iterm/2;                  //强制转换,下次反弹前面的二分之一
    }
    printf("%0.2lf %0.2lf",iterm,sum);           //注意格式别错了
    return 0;
}

还有什么不懂的问题大家可以在下方的评论区提问,小方会为您解答

 

0.0分

71 人评分

  评论区

#include<stdio.h>
int main()
{
    float  M,N,a,i,sum=0;
    scanf("%f%f", &M, &N);
    for(i=1;i<=N;i++){
       a=M/2;
       sum=sum+a+M;
       M=M/2;
    }
    printf("%.2f %.2f\n",a,sum);
    return 0;
}
显示答案错误,我觉得逻辑没错
2019-06-18 09:17:39
#include <stdio.h>

int main()
{
	double M,N,i,h1=500.0,h2=1000.0,c;
	scanf("%lf",&M);
	scanf("%lf",&N);
	for(i=2;i<=N;i++)
	{
	    c=h1;
		h1=h1/2;
		h2=h2+c*2.0;
	}
	printf("%0.2lf %0.2lf",h1,h2);
	return 0;
}

不知道哪错了,,,是不是5以后 的运算不是这样了?,我算了5以前的运算都对了啊
2019-06-06 16:58:26
#include <stdio.h>

int main()
{
	double M,N,i,h1=500.0,h2=1000.0,c;
	scanf("%lf",&M);
	scanf("%lf",&N);
	for(i=2;i<=N;i++)
	{
	    c=h1;
		h1=h1/2;
		h2=h2+c*2.0;
	}
	printf("%0.2lf %0.2lf",h1,h2);
	return 0;
}
不知道错哪。。。算了前5个的结果都是对的啊
2019-06-06 16:56:35
#include<stdio.h>
int main()
{
    double M;
	int N;
    double sum=0;
    scanf("%lf %d",&M,&N);
    while(N--)
	{
        M=M/2;
        sum=sum+3*M;
    }
    printf("%.2lf %.2lf",M,sum);
    return 0;
}
有人能给我看下嘛,谢谢~
2019-05-29 22:18:43
i==0怎么是最后一次反弹呢,应该是输入的高度啊
2019-05-19 12:48:30
/* Note:Your choice is C IDE */
#include "stdio.h"
#include <math.h>
void main()
{
    double M,N,a=0,b=0,c=0,i;
    scanf("%lf  %lf",&M,&N);
    for(i=0;i<N;i++)
    {
    	a=M/pow(2,N);
    	b=2*M-(4*1000/pow(2,N));
    	c=M+b;
    }
    printf("%.2lf %.2lf",a,c);
    return 0;
}
答案错误50%,错在哪?
2019-05-09 22:35:16
if(i==0)                                 //加上最后的反弹
            sum+=iterm;                                
        else sum+=2*iterm;                       //中间过程
         iterm=(double)iterm/2;
这俩个有疑问,就是不应该是iterm=(double)iterm/2先执行,然后再执行sum+=2*iterm,反弹后减半,然后就是先除以2,接下来就是下落和上升两个过程用 sum+=2*iterm;
2019-03-31 04:54:22
找出公式,其实就是等比求和
第N次落地时反弹an=m/2^n
共经过sn=3*m-4*an
代码如下:
#include"stdio.h"
void main()
{
	double i,n,m,An=1.0,Sn=1.0;
	scanf("%lf%lf",&m,&n);
	for(i=0;i<n;i++)
		An/=2;
	An=m*An;
	Sn=3*m-4*An;
	printf("%.2lf %.2lf\n",An,Sn);
}
2019-03-23 13:36:58