解题思路以及注意事项:
用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 人评分
#include<stdio.h> #include<math.h> int main() { int i=1; int m,n; double a,b,c=0; scanf("%lf %d",&m,&n); a= m/pow(2,n); while(i<=n) { b=m+m/2; m=m/2; c=c+b; i++; } printf("%.2f %.2f\n",a,c); return 0; }我这个程哪里有问题,请帮忙指出
#include<stdio.h> #include<math.h> int main() { int i=1; int m,n; double a,b,c=0; scanf("%lf %d",&m,&n); a= m/pow(2,n); while(i<=n) { b=m+m/2; m=m/2; c=c+b; i++; } printf("%.2f %.2f\n",a,c); return 0; }我这个程序哪里错了
#include<stdio.h> int _tmain(int argc, _TCHAR* argv[]) { int b,i; double x=0,a; scanf("%Lf %d",&a,&b); for(i=1;i<=b;i++) { if(i<=2) { x+=1000; a=a/2; } else { x+=2*a; a=a/2; } } printf("%0.2Lf %0.2Lf",a,x); return 0; } 感觉没毛病啊!!!
#include<stdio.h> int main() { int m,n,i; double m1=0,n1=2; scanf("%d%d",&m,&n); for(i=1;i<n;i++) { n1=n1*2; m1=m1+n1; } if(n==0) { printf("%d.00 %d.00\n",m,n); } else { printf("%.2lf %.2lf\n",m/n1,(m/n1*m1)+m); } return 0; }
xiaohouge 2019-02-25 20:47:44 |
落地n次用公式求总长:总长=2*长-(4*长/2^n),公式求第n次落地时反弹高:高度=长/2^n
#include<stdio.h> #include<stdlib.h> int main() { long double M,N,m,n;//m和n分别是反弹高度和历经路程 scanf("%Lf %Lf",&M,&N); m=M*pow(0.5,N); n=M*(3-pow(0.5,N-2)); printf("%.2Lf %.2Lf",m,n); return 0; }
int i; double M,N,height; scanf("%lf %lf",&M,&N); double sum = M; height=M*pow(0.5,N); for(i=1;i<N;i++) { sum=sum+2*M*pow(0.5,i); } printf("%0.2lf %0.2lf",height,sum);
int main() { float M,sum=0,a=0; int N; scanf("%f %d",&M,&N); for(int i=1;i<=N;i++) { sum+=M+a; a=M/2; M=M/2; } printf("%.2f %.2f\n",M,sum); return 0; }
C二级辅导-进制转换 (C语言代码)浏览:808 |
C二级辅导-求偶数和 (C语言代码)浏览:601 |
C语言训练-计算1977!* (C语言代码)浏览:886 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:525 |
C语言训练-角谷猜想 (C语言代码)浏览:1673 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:543 |
大神老白 (C语言代码)浏览:634 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1342 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1241 |
校门外的树 (C语言代码)浏览:692 |
汪辰凯 2019-03-16 23:45:19 |
#include<stdio.h> int main() { double m,n,c=0; scanf("%lf%lf",&m,&n); while(n>0){ c+=m; m=0.5*m; c+=m; n--; } c-=m; printf("%.2lf %.2lf",m,c) ; return 0; } 这是不是更简单??
yu19891222 2019-03-21 21:46:23 |
我是初学,你的确实简单,我写的不知道哪里有问题
飞羽 2019-03-23 13:55:59 |
你这里有三处问题:1、定义的类型和输入赋予的类型要一样;错误:int m,%lf输入m; 2、pow(2,n)改成pow(2.0,n)注意一下参数的类型;3、它算的总路程不包括它落地最后一次那反弹的路程,而你的while循环里是包括了的
yu19891222 2019-04-04 21:45:56 |
@cjun1998 感谢感谢