一个特别固执的人


私信TA

用户名:grl

访问量:18948

签 名:

泰库拉

等  级
排  名 595
经  验 4076
参赛次数 1
文章发表 13
年  龄 22
在职情况 学生
学  校 长春理工大学
专  业 电子信息工程

  自我简介:

解题思路: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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

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哪有问题?
2023-12-07 18:26:42
#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;
}
2023-04-24 21:53:43
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);
2021-05-28 15:16:41
#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;
}
2021-05-06 21:33:36
  • «
  • 1
  • »