解题思路:
首先需要清楚输入和输出分别是什么
输入:小球自由落体的高度M;以及小球反弹的次数N;
输出:小球第N次反弹的高度,小球在第N次反弹经过的总路程。
第一次反弹 路程:s1=M 反弹高度:h1=M/2;
第二次反弹 s2=s1+h1*2 h2=h1/2;
第三次反弹 s3=s2+h2*2 h3=h2/2;
....
以此类推,第n次反弹的高度等于前一次反弹高度的1/2,第n次反弹经过的总路程等于前一次反弹的路程加上前一次反弹高度的两倍。
注意事项:
反弹的总路程是指到第N次落地时的路程,不包括第N次反弹后的高度),然后对输出格式的要求是 保留两位小数。
参考代码:
int main() {
float m, n;
printf("请输入球抛下时的高度和弹回的次数:");
scanf("%f%f", &m, &n);
double h = m / 2;
double s = m ;
for (int i = 1;i < n;i++) {
s = s + 2 * h;
h = h * (1.0 / 2);
}
printf("%.2lf %.2lf", h, s);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复