解题思路以及注意事项:
用for()循环来模拟反弹的过程,注意不要忘了最后的反弹反弹高度以及开始落下的距离,其他的中间过程都是两倍的反弹高度。
注意不要弄错了scanf()里面的格式。
可以用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 人评分
答案显示对50%,有没有考虑到的情况!大佬们帮忙看看哪里忽略了。 #include <iostream> #include <cstdio> using namespace std; double g_sum; double Result(double M,double N) { if(N!=0) { g_sum+=2*M; //每次的高度乘以2,但是多算了刚开始的一段,所以在main中最终结果要送去最开始的M return Result(M/2,N-1); //递归 每次距离 M 减半,次数 N 减 1 } else //N=0,即次数减为 0 的时候,当然不能再递归了 { return M; } } int main() { double M,N; cin>>M>>N; cout<<Result(M,N)<<" "; printf("%.2lf",g_sum-M); //总距离要送去第一次多计算的距离 return 0; }
int i; double s=0,M,N; scanf("%lf%d", &M, &N); for(i=0;i<N;i++) { s=s+M+M/2; M=M/2; } printf("%.2lf %.2lf\n",M,s); return 0; 这个哪里有错哇
#include <stdio.h> #include <math.h> int main() { int i; float M,N,height,length; scanf("%f%f",&M,&N); height=1000*pow(0.5,N); for(i=0;i<=N;i++) length+=2*1000*pow(0.5,i); length=length-1000-1000*pow(0.5,N-1); printf("%.2f %.2f",height,length); return 0; } 这样写行吗
#include<stdio.h> #include<math.h> int main() { int m,n; double high,sum; scanf("%d%d",&m,&n); high=pow(1.0/2.0,n)*m; printf("%.2lf ",high); sum=m+2*m*(1-pow(1.0/2.0,n-1)); printf("%.2lf",sum); return 0; }
#include<stdio.h> void main() { double x,y,sum; int i,n; scanf("%lf %d",&x,&n); for(i=1;i<=n;i++){ y=x/2; sum=sum+(x+y); x=y; } printf("%.2lf %.2lf",y,sum); } 这哪里有问题啊,第五次落地再反弹不应该是2906.25吗
lp 2018-10-03 11:30:51 |
题目说的是第N次反弹时的经历的路程而不是反弹后经历的路程,所以还要减去最后一次弹起的高度31.25
Nemo 2018-11-30 23:34:00 |
楼上正确,但是还一个问题是sum的初值是什么?没初值貌似不能准确计算吧
lilylierlx 2019-03-17 20:40:15 |
@luopeng 感谢解答,也感谢提问者^^ 遇到了一样的审题问题
#include<stdio.h> void main() { float M,num=0; int N; scanf("%f %d",&M,&N); num = M; for (int i = 1;i < N;i++) { M = M/2.0; num += 2 * M; } M = M / 2.0; printf("%.2f,%.2f",M,num); }秦刚我看一下这哪里错了
整除问题 (C语言代码)浏览:881 |
C语言程序设计教程(第三版)课后习题8.2 (Java代码)浏览:2268 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:945 |
计算质因子 (C语言代码)浏览:696 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1144 |
找出最长的字符串来 (C语言代码)浏览:1760 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:713 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:761 |
简单的a+b (C语言代码)浏览:434 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:614 |