点赞(0)
 

0.0分

116 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 69 条评论

曾Double子习 3年前 回复TA
#include<stdio.h>
#include<math.h>

int main(void)
{
    double M,N,a=2,result,sum=0;
    scanf("%Lf %Lf",&M,&N);
    result=1/pow(a,N)*M;
    printf("%.2Lf",result);
    putchar(' ');
    for(int i=1;i<N;i++)
    {
        sum=sum+1/pow(a,i)*M*2;
    }
    sum=sum+M;
    printf("%.2Lf",sum);
    return 0;
}
说我运行错误什么鬼?
梦魔 3年前 回复TA
#include<stdio.h>
double height(float M, int N){
	if(N==0){
		return M;
	}
	else{
		return height(M, N-1)/2.0;
	}
}

int main(void){
	int N;
	double S;
	float M;
	scanf("%f%*c%d", &M, &N);
	S = -M;
	for(int i=1;i<=N;i++){
		S += 2*height(M, i-1);
	}
	M = height(M, N);
	printf("%.2f %.2f\n", M, S);
	return 0;
}
你tm劈我代码是吧 3年前 回复TA
#include <stdio.h>
int main()
{
    double M;
    int N;
    double m = 0;
    scanf("%lf%d", &M, &N);
    for (int i = 1; i <= N; i++)
    {
        m += M;
        M *= 1.0/2.0;
        m += M;
    }
    m -= M;
    printf("%.2f %.2f", M, m);
    return 0;
}

/*
    1. M/1+M/2;
    2. M/1+M/2+M/2+M/4;
    3. 2.+M/4+M/8;
*/
Alexis 3年前 回复TA
#include<stdio.h>
int main()
{
	double M,N,height,meter=0;
	scanf("%lf%lf",&M,&N);
	meter=M;    // 先把第一次落下的高度加上
	for(int i=1;i<N;i++){
	    M = M/2;     // 之后的每一次都除以一半高度
	    meter += M*2;    // 一上一下都加上
	}
	height = M/2;    // 最后一次的来回高度除以2
	printf("%.2lf %.2lf\n",height,meter);
	return 0;
}
徐玮 3年前 回复TA
#include<stdio.h>

int main()
{
    int N;
    float M,s,h;
    scanf("%f %d",&M,&N);
    h=M;
    s=0;
    for(int i=N;i>0;i--)
    {
        h*=0.5;
        s+=4*h;
    }
    s=s-1000;
    printf("%.2f    %.2f",h,s);
    return 0;
}
哪里错了求解
十幺 3年前 回复TA
作者给的等比数列求和公式简洁明了
如果纯找规律     对这道题来说也很简单   
难点是求和   按输出案例看出第n次反弹的路程不计入总路程
我这里是以每次弹跳  下落+反弹   为一个周期   最后只要减去第n次反弹的路程(即第n次反弹高度)就是所求路程
要求每个周期的路程然后累加就行   稍微分析一下就会发现 每周期路程就是反弹高度的三倍
#include <stdio.h>
int main()
{
	int n,i;
	float m,height=1,distance=0;
	scanf("%f %d",&m,&n);
	for(i=0;i<n;i++)
	{
		height/=2;
		distance=distance+height*3;
	}
	printf("%.2f %.2f\n",height*m,(distance-height)*m);
    return 0;
}
思无邪 3年前 回复TA
@小明来了 请问一下这个最后面那个sum-mid*2怎么理解哦,感谢
小明来了 3年前 回复TA
//一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数
#include<stdio.h>
int main()
{
	double M,N,i,mid=0,sum;
	scanf("%lf %lf",&M,&N);
	sum=M;
	mid=M;
	while(N)
	{
		mid/=2;
		sum+=mid*2;
		N--;
	}
	printf("%.2lf %.2lf",mid,sum-mid*2);
	return 0;
}
cando 3年前 回复TA
@tqtql 最后这个M=M-a*2是为什么
tqtql 3年前 回复TA
int main()
{
	float a, b;
	float M;
	scanf("%f%f", &a, &b);
	M = a;
	for (int i = 1; i <= b; i++)
	{
		a = a / 2.0;
		M = M + a * 2;
	}
	M = M - a * 2;
	printf("%.2f %.2f", a, M);
	return 0;
}