问题标题: 酷町堂:1010 弹球高度

0
0
已解决
王紫馨
王紫馨
高级守护
高级守护

1010   弹球高度

题目描述 Description

一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。 编程计算气球在第8次落地时,共经过多少米? 第8次反弹多高?

输入描述 Input Description

输入一个整数h,表示球的初始高度。

输出描述 Output Description

输出包含两行,均保留四位小数(四舍五入)。
第1行:到球第8次落地时,一共经过的米数。
第2行:第8次弹跳的高度。

样例输入 Sample Input


 

20

样例输出 Sample Output


 

59.6875
0.0781

 

题目网址:http://judge.codingtang.com/problem/1010/

 

为什么只有70分?

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;

int main(){
	double s,h;
	cin>>h;
	for(int i=1;i<=8;i++){
		s+=h;
		h/=2;
		s+=h;
	}
	s-=h;
	printf("%.4lf\n%.4lf",s,h);
	return 0;
}

 

王紫馨在2018-03-31 19:42:59追加了内容

王紫馨在2018-04-07 19:49:54追加了内容

问的是哪里错的,不是要核心代码

王紫馨在2018-04-13 23:11:09追加了内容

采纳的答案在评论里还有一部分


1
已采纳
栾峻岩
栾峻岩
初级天翼
初级天翼
cin>>h;
    for(int i=1;i<=8;i++)

错了,应该为:
 

cin>>h;
    s=h;
    for (int i=2;i<=8;i++)

 

s-=h;

错了,应该为:
 

 h/=2;

 

输出包含两行,均保留四位小数(四舍五入)。

你没有四舍五入。

100AC

1
王紫馨
王紫馨
高级守护
高级守护

@栾峻岩 #include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
 
int main(){
    double s,h;
    cin>>h;
    s=h;
    for(int i=2;i<=8;i++){
        s+=h;
        h/=2;
        s+=h;
    }
    h/=2;
    printf("%.4f\n%.4f\n",int(s*10000+0.5)/(10000.0),int((h/2)*10000+0.5)/(10000.0));
    return 0;
}

这是我改过的代码,样例都是错的(按照你的改的)

@栾峻岩 回复评论的

 

1
王紫馨
王紫馨
高级守护
高级守护

楼上两位为何发的一样?

表示很质疑是不是抄的

而且问一下,这些语句分别是什么意思?

可以加一个备注么?

恕我问题有点多=-=

0
李颂宥
李颂宥
初级光能
初级光能
double h,sum=0,i=1;
    cin>>h;
    do
    {
        i++;
        sum+=h;
        h=h/2;
        sum+=h;
    }while(i<=8);
    sum-=h;
    printf("%.4f\n%.4f",int(sum*10000+0.5)/10000.0,int(h*10000+0.5)/10000.0);
    return 0;
0
杨子逸
杨子逸
新手天翼
新手天翼
double d=0,H;
    定义 h;
    cin>>h;
    d=h;
    H=h;
    for(int i=2;i<=8;i++){
        H=H/2;
        d+=2*H;
    }
    printf("%.4f\n",(int)(d*10000+0.5)/10000.0);
    printf("%.4f",(int)(H/2*10000+0.5)/10000.0);

定义:int

杨子逸在2018-04-08 12:10:21追加了内容
double d=0,H;
    定义 h;
    cin>>h;
    d=h;//d表示先算第一次单程的
    H=h;
    for(int i=2;i<=8;i++){
        H=H/2;//算出下一次弹球的高度
        d+=2*H;//每一次,有2个全程(上下)
    }
    printf("%.4f\n",(int)(d*10000+0.5)/10000.0);
    printf("%.4f",(int)(H/2*10000+0.5)/10000.0);

定义:int

杨子逸在2018-04-08 12:27:17追加了内容

还有

double s,h;要多定义个Z

cin>>h;

Z=h;

for(int i=1;i<=8;i++){

 

s+=h;

 

h/=2;

 

s+=h;

s-Z;

0
高亮节
高亮节
资深守护
资深守护

总下落长度=总下落长度+下落的+下落的/2

for k:=1 to 8 do

begin

b:=b+c+c/2;

c:=c/2;

end;

0
0
0
刘睿轩
刘睿轩
中级光能
中级光能
double d=0,H;
     int h;
     cin>>h;
     d=h;
     H=h;
     for(int i=2;i<=8;i++)
     {
         H=H/2;
         d+=2*H;
     }
     printf("%.4f\n",(int)(d*10000+0.5)/10000.0);
     printf("%.4f",(int)(H/2*10000+0.5)/10000.0);
0
黄昊轩
黄昊轩
新手守护
新手守护
read(h);
s:=h;
for i:=2 to 8 do
begin
h:=h/2;
s:=s+2*h;
end;
writeln(s:0:4);
writeln(h/2:0:4);
0
周墨彧
周墨彧
中级守护
中级守护
double型 h,s;
    输入>>h;
    s=-h;
    for(int i=1;i<=8;i++)
    {
        s+=2*h;
        h/=2;
    }
    printf输出("%.4f\n",int(s*10000+0.5)/10000.0);
    printf输出("%.4f",int(h*10000+0.5)/10000.0);
0
周墨彧
周墨彧
中级守护
中级守护
double型 h,s;
    输入>>h;
    s=-h;
    for(int i=1;i<=8;i++)
    {
        s+=2*h;
        h/=2;
    }
    printf输出("%.4f\n",int(s*10000+0.5)/10000.0);
    printf输出("%.4f",int(h*10000+0.5)/10000.0);
0
祝明朗
祝明朗
初级光能
初级光能
double d=0,H;
    定义 h;
    输入>>h;
    d=h;
    H=h;
    循环(int i=2;i<=8;i++){
        H=H/2;
        d+=2*H;
    }
    printf("%.4f\n",(int)(d*10000+0.5)/10000.0);
    printf("%.4f\n",(int)(H/2*10000+0.5)/10000.0);

 

0
项依凡
项依凡
初级光能
初级光能
 for i:=2 to 8 do
    begin   
        n:=n/2;
        j:=j+n;
    end;
    write(j*2+k:0:4);
    writeln;
    for i:=1 to 8 do
    k:=k/2;//核心
0
项依凡
项依凡
初级光能
初级光能
 for i:=2 to 8 do
    begin   
        n:=n/2;
        j:=j+n;
    end;
    write(j*2+k:0:4);
    writeln;
    for i:=1 to 8 do
    k:=k/2;//核心
0
薛新奥
薛新奥
新手光能
新手光能
double d=0,H;
    int h;
    cin>>h;
    d=h;
    H=h;
    for(int i=2;i<=8;i++){
        H=H/2;
        d+=2*H;
    }
    printf("%.4f\n",(int)(d*10000+0.5)/10000.0);
    printf("%.4f\n",(int)(H/2*10000+0.5)/10000.0);

    return 0;

 

0
鲍欣妍
鲍欣妍
修练者
修练者
    x = x * 100000;
    int p = (int)x;
    int q = p % 10;
    if (q == 5)
    {
        p++;    
    }
    return (double) p / 100000;
}

int main()
{
    double h,jishu;
    cin>>h;
    for(int a=1;a <=8;a++){
        jishu = jishu + h;
        h=h/2;
        jishu=jishu+h;      
    }
    jishu=jishu-h;
    jishu = sswr(jishu);
    h = sswr(h);
    printf("%.4lf\n",jishu);
    printf("%.4lf\n",h);

0
0
王紫馨
王紫馨
高级守护
高级守护

@栾峻岩 我有几个问题想问你

1、printf难道不可以四舍五入吗?(除了保留到整数位数)我记得我好像学过。。

2、为什么我按照你说错的地方改了,可还是0分?

3、能否告诉我为何要改那些地方吗?

0
杨陈卓
杨陈卓
新手天翼
新手天翼
    while (i<=7)
    {
        h/=2;
        s+=h*2;
        ++i;
    }
    printf("%.4f\n%.4f\n",int(s*10000+0.5)/(10000.0),int((h/2)*10000+0.5)/(10000.0));

 

0
我要回答