解题思路:1.首先心里有个大致的此题描述的大致过程(或者可以画个图)。
2.然后我的思路可能想复杂了(有好的可以留在评论区里嗷)
3.代码中有一些注释掉的"printf",这个是当时在检测过程中用到的。
4.设置三个变量:"dis_before"保留前一次反弹的高度,"dis1"为此次反弹的高度 ,"dis"为总距离。
5.反弹的第一次和后面几次作了区分(体现在"if-else"语句中),而"else"语句中是对输入反弹几次做出的区分。
6.后面的感兴趣的看一下注释吧,感觉这样说不好对照(就好像补丁,哈哈)。
注意事项:1.一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。共经过多少米?此处的距离是落地不反弹的距离(我说咋一直不对劲)。
2.注意变量类型(我也没去试不同变量的相加和相减,就直接用类型转换的方式做了)。
3.这个题目花了好长时间,还是能力不够吧,希望下次理清逻辑在开始(给自己的notice)
参考代码:
#include <stdio.h> int main(void) { int n,i; float m,dis1,dis,dis_before;//从m米高度自由下落 ,第n次落地 scanf("%f%d",&m,&n); dis1=m; dis=m; dis_before=0; for(i=1;i<=n;i++)//对于反弹次数的数据 { dis_before=dis1;//定义初始变量为0,并在每次保留上一次的反弹高度 dis1=dis1/2;//反弹后高度折半 if(i==1)//如果是第一次下落,就没什么好说了,直接是初始高度 dis=dis; else { //printf("%.2f %.2f %.2f\n",dis1,dis,dis_before); if(n==1) dis=dis; else dis=dis+dis_before*2;//画图的话会清晰一些,就是上次的反弹乘2 } //printf("%.2f %.2f %.2f\n",dis1,dis,dis_before); } printf("%.2f %.2f",dis1,dis);//后面保留两位小数 return 0; }
0.0分
7 人评分
int main() { double num = 0; double a, M; int N,i; scanf("%lf,%d",&M, &N); for (i = 1;N >= i ;i++) { M = (double)M / 2; a = (double)M * 3; num = a + num; } printf("%.2f %.2f",M,num); return 0; } 距离unm哪有问题?
#include<stdio.h> int main() { float m,n,a,sum=0; scanf("%f%f",&m,&n); a=m; for(int i=0;i<n;i++){ sum+=m; m*=0.5; } printf("%.2f ",m); printf("%.2f",sum*2-a); return 0; }
float m,n;float a,b=0; scanf("%f %f",&m,&n); int i; for(i=0;i<n,i++) { a=m/2; b=b+m+a; m=a; } b=b-a; printf("%.2f %.2f",a,b);
#include<stdio.h> int main(){ double a,b,c,M,N; scanf("%lf%lf",&M,&N); a=b=c=0; for(int i=1;i<=N;i++){ if(i==N){ b=b+a; a=M/2; }else{ a=M/2; b=a+b+M; M=a; } } printf("%.2lf %.2lf",a,b); return 0; }
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:556 |
WU-格式化数据输出 (C语言代码)浏览:1818 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:592 |
数对 (C语言代码)浏览:762 |
核桃的数量 (C语言代码)浏览:893 |
程序员的表白 (C语言代码)浏览:678 |
剪刀石头布 (C语言代码)浏览:1519 |
陶陶摘苹果2 (C语言代码)浏览:650 |
A+B for Input-Output Practice (II) (C语言代码)浏览:622 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:564 |