原题链接:[编程入门]自由下落的距离计算
0.0分
116 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> #include<math.h> int main(void) { double M,N,a=2,result,sum=0; scanf("%Lf %Lf",&M,&N); result=1/pow(a,N)*M; printf("%.2Lf",result); putchar(' '); for(int i=1;i<N;i++) { sum=sum+1/pow(a,i)*M*2; } sum=sum+M; printf("%.2Lf",sum); return 0; } 说我运行错误什么鬼?#include<stdio.h> double height(float M, int N){ if(N==0){ return M; } else{ return height(M, N-1)/2.0; } } int main(void){ int N; double S; float M; scanf("%f%*c%d", &M, &N); S = -M; for(int i=1;i<=N;i++){ S += 2*height(M, i-1); } M = height(M, N); printf("%.2f %.2f\n", M, S); return 0; }#include <stdio.h> int main() { double M; int N; double m = 0; scanf("%lf%d", &M, &N); for (int i = 1; i <= N; i++) { m += M; M *= 1.0/2.0; m += M; } m -= M; printf("%.2f %.2f", M, m); return 0; } /* 1. M/1+M/2; 2. M/1+M/2+M/2+M/4; 3. 2.+M/4+M/8; */#include<stdio.h> int main() { double M,N,height,meter=0; scanf("%lf%lf",&M,&N); meter=M; // 先把第一次落下的高度加上 for(int i=1;i<N;i++){ M = M/2; // 之后的每一次都除以一半高度 meter += M*2; // 一上一下都加上 } height = M/2; // 最后一次的来回高度除以2 printf("%.2lf %.2lf\n",height,meter); return 0; }#include<stdio.h> int main() { int N; float M,s,h; scanf("%f %d",&M,&N); h=M; s=0; for(int i=N;i>0;i--) { h*=0.5; s+=4*h; } s=s-1000; printf("%.2f %.2f",h,s); return 0; } 哪里错了求解作者给的等比数列求和公式简洁明了 如果纯找规律 对这道题来说也很简单 难点是求和 按输出案例看出第n次反弹的路程不计入总路程 我这里是以每次弹跳 下落+反弹 为一个周期 最后只要减去第n次反弹的路程(即第n次反弹高度)就是所求路程 要求每个周期的路程然后累加就行 稍微分析一下就会发现 每周期路程就是反弹高度的三倍 #include <stdio.h> int main() { int n,i; float m,height=1,distance=0; scanf("%f %d",&m,&n); for(i=0;i<n;i++) { height/=2; distance=distance+height*3; } printf("%.2f %.2f\n",height*m,(distance-height)*m); return 0; }//一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 #include<stdio.h> int main() { double M,N,i,mid=0,sum; scanf("%lf %lf",&M,&N); sum=M; mid=M; while(N) { mid/=2; sum+=mid*2; N--; } printf("%.2lf %.2lf",mid,sum-mid*2); return 0; }int main() { float a, b; float M; scanf("%f%f", &a, &b); M = a; for (int i = 1; i <= b; i++) { a = a / 2.0; M = M + a * 2; } M = M - a * 2; printf("%.2f %.2f", a, M); return 0; }