烟火尘霄


私信TA

用户名:tzu190341102

访问量:56768

签 名:

等  级
排  名 105
经  验 7936
参赛次数 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分

39 人评分

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

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#include <stdio.h>
int main(void)
{

    int m,n,i;
    scanf("%d %d",&m,&n);
    float sum=0,h=m;
    for(i=0;i<n;i++) {
        h = h / 2.0;
        sum+=2*h;
    }
        sum=sum-2*h+1000;
        printf("%.2f", h);
        printf(" ");
        printf("%.2f\n",sum);
    return 0;

}
求大佬解释,哪里错了。
2022-03-26 17:24:36
各位大佬可以帮我看看哪里有问题吗

#include<stdio.h>
#include<math.h>
 int main (void){
 	int N,i;          //n次落地 
 	double M,H,H1=0;   //M米的高度自由下落   S为总长 
 	
 	scanf("%lf %d",&M,&N);
 	        float S=M;
 	for(i=1;i<=N;i++)
 	{
 	H=M*pow(0.5,i);
	 S=S+H+H1;
	 	H1=H;
	 }
 	
 	printf("%0.2lf %0.2lf",H,S);
 	
 	return 0;
 }
2022-03-22 19:45:41
#include <stdio.h>
int main()
{
	int N,i;
	double sum1,sum2,M;
	scanf("%lf%d",&M,&N);
	for(i=1;i<=N;i++)
	{
		sum1=1.0/2*M;
		sum2=sum1+M+sum2;
		M=sum1;
	}
	printf("%.2lf %.2lf",sum1,sum2-sum1);
	return 0;
 } 
不知道为什么显示答案运行错误
2021-10-20 19:21:35
#include <stdio.h>
int main()
{  double M,N,H=0,sum=0;
  scanf("%lf %lf",&M,&N);
  for(int i=0;i<N;i++){
  	 H=M/2;
	sum=sum+(M+M/2);
  	 M=M/2;
  	 
  }  
  printf("%.2f %.2f",H,sum-M);
  return 0;
}
2021-10-05 17:12:47
#include<stdio.h>

int main(){

    double M,i;
    int N ;
    double sum;
    scanf("%lf %d",&M,&N);
    sum = -M;
    i = M;
    while (N>0)
    { 
        sum += M;
        M = M / 2;
        N--;
       
    }
    sum = sum * 2 + i;
    printf("%.2f %.2f",  M, sum);
   
    return 0;
}
我之前那个写-1000是因为题目所以写的-1000,就是这个地方错了,用输入的M代替就对了
2021-03-02 13:03:24
#include<stdio.h>

int main(){

    double M;
    int N ,i,j;
    double sum=-1000;
    scanf("%lf %d",&M,&N);
    i = M;
    j = N;
    while (N>0)
    { 
        sum += M;
        M = M / 2;
        N--;
       
    }
    sum = sum * 2 + 1000;
    printf("%.2f %.2f",  M, sum);
   
    return 0;
}
不知道有什么问题,帮忙看一下
2021-02-07 12:51:54