烟火尘霄


私信TA

用户名:tzu190341102

访问量:63254

签 名:

等  级
排  名 95
经  验 8670
参赛次数 1
文章发表 6
年  龄 0
在职情况 学生
学  校 泰州学院
专  业

  自我简介:

TA的其他文章

解题思路:

审清题干,养成习惯。

两个输入,两个输出,M表示初始下落高度,N表示触地次数。要求输出第N次触地时反弹的高度及所经过的路程长度,都保留两位小数,目的很明确。

首先来看反弹高度,题目描述:每次落地后返回原高度的一半。即:第N次触地反弹高度为其触地前高度的一半,也就是说第N次反弹高度为第N-1次反弹高度的一半,可以表示为high(N)=high(N-1)*1/2,当N=1时,high(N-1)=M。由此可以得出high(N)=M*(1/2)N

然后我们来看第二个输出:第N次触地时所经过的路程长度。第一次触地时所经过的路程长度为M,第二次触地时所经过的路程长度为M+high(1)*2,第三次触地时所经过的路程长度为M+high(1)*2+high(2)*2...如此类推,第N次触地时所经过的路径长度即为:M+high(1)*2+high(2)*2+...+high(N-1)*2。利用循环即可求出最后结果。

求出两个输出之后,不要忘记题干的输出要求:保留两位小数。用printf函数的格式控制就可以了。

注意事项:
(1)注意定义变量时的变量类型;

(2)注意输出时保留两位小数的要求;

(3)注意题目要求的是第N次落地时所经过的路径长度,而不是反弹后所经过的路径长度。

参考代码:

# include<stdio.h>
# include<math.h>

void ReBack(double M)
{
	double back,sum=M;
	int i,N;
	scanf("%d",&N);
	back=M*pow(0.5,N);
	for(i=1;i<N;i++)
		sum+=M*pow(0.5,i-1);
	printf("%.2lf %.2lf",back,sum);
}

int main()
{
	double M;
	scanf("%lf",&M);
	ReBack(M);

	return 0;
}

如有裨益,吾之幸也。祝大家编程进步。


 

0.0分

43 人评分

  评论区

写得怎么样,通俗易懂吧

#include<stdio.h>

float M;  int N;

float h(int x)
{
	if (x == 1)
		return (1/2)*M;
	if (x > 1)
		return (1 / 2 )* h(x - 1);
}


int main()
{

	scanf_s("%f %d", &M,&N);
	double S = M;
	if (N == 1)
	{
		
		printf("%2.lf %2.lf", S, h(1));
	}
	else
	{
		for (int i = 2; i <= N; i++)
		{
			S += S + h(i - 1);
		}
		printf("%2.lf %2.lf", S, h(N));
	}

	return 0;
}
2024-11-12 19:35:31
误打误撞做出来的,逻辑不对。
2024-10-24 20:59:21
#include <stdio.h>
int main()
{
	
	float m = 0,d=0,n=0;
	scanf("%f %f",&m, &n);
	for (int i = 0; i < n; i++)
	{
		float c = m*1.5;
		m *= 0.5;
		d += c;
	}
	printf("%.2f %.2f", m, d - m);
	return 0;
}
如何
2024-02-08 18:26:28
#include<stdio.h>
#include<math.h>
int main()
{
    int M,N;
    scanf("%d%d",&M,&N);
    double s=0,sum=0,sum1=M/pow(2,N);
    printf("%0.2lf ",sum1);
    for(int i=1;i<=N;i++){
        if(i==1){
            sum+=M;
        }
        else{
            s=M/pow(2,i-1);
            sum+=s*2;
        }
    }
    printf("%0.2lf",sum);
    return 0;
}
2023-07-22 15:29:28
#include<stdio.h>
int main() {
	float a[3] = { 0,0,0},m,n;
	scanf_s("%f%f", &m,&n);
	for (; n != 0; n--) {
		a[1] += m*2;
		if (a[2] == 0)a[2] = 1,a[1]-=m;
		a[0] = m / 2;
		m = a[0];
	}
	printf("%.2f %.2f", a[0],a[1]);
}
2023-07-18 20:14:45
int main() {

	double M, N;
	double S = 0.0;
	int i;
	scanf_s("%lf%lf", & M, &N);
	for ( i = 1; i <= N; i++)
	{
		S += M;
		M = M / 2.0;
		S += M;
	}
	printf("%.2lf  %.2lf",M, S-M);
	return 0;
}
我这是复制✔的
2022-09-29 15:43:57
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
    int m,n;
    double x,y;
   scanf("%d%d",&m,&n);
   x=m/(pow(2,n));
   y=m*(1-pow(0.5,n-1));
   printf("%.2lf %.2lf",x,2*y+m);
   return 0;
}
2022-07-14 18:29:22
#include<stdio.h>


int main(void)
{
    int Times;
    double Length;
    scanf("%lf%d",&Length ,&Times);
    
    double TotalLength;
    double SingLength;

    TotalLength += Length;

    for(int i = 1;i<Times;i++)
    {
        TotalLength += Length;
        Length /= 2.0;
    }
    SingLength = Length / 2;

    printf("%.2lf %.2lf\n" ,SingLength ,TotalLength);

    return 0;
}
2022-05-25 22:09:58