高级守护
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追加了内容
采纳的答案在评论里还有一部分
初级天翼
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
高级守护
@栾峻岩 #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;
}
这是我改过的代码,样例都是错的(按照你的改的)
@栾峻岩 回复评论的
初级光能
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;
新手天翼
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;
资深守护
总下落长度=总下落长度+下落的+下落的/2
for k:=1 to 8 do
begin
b:=b+c+c/2;
c:=c/2;
end;
中级光能
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);
新手守护
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);
中级守护
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);
中级守护
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);
初级光能
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);
初级光能
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;//核心
初级光能
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;//核心
新手光能
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;
修练者
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);
高级守护
@栾峻岩 我有几个问题想问你
1、printf难道不可以四舍五入吗?(除了保留到整数位数)我记得我好像学过。。
2、为什么我按照你说错的地方改了,可还是0分?
3、能否告诉我为何要改那些地方吗?
新手天翼
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));