编译没有问题,但覆盖范围不是所有数,不知错哪了

img

#include
int main()

{
double sum=0,m,a,i=1,n;//n为反弹次数,a为初始高度,m为反弹后的高度
scanf("%lf %lf",&a,&n);//double的scanf是%lf
if (i==1){ //第一次下落是单行程,与之后的循环不符,单独写//if 里条件是等于时双写就是等于//单写是赋值
m=a/2;
sum=a;
}else if(n>1){
sum=a;//第一次下落后是双行程,双行程的初始值已经有了a

    for (i=1;isum+=m;//sum结果是浮点,m也得是,即a也是//画图可得
        m=m/2;
   
   }
} printf("%.1f %.1f",sum,m/2);
  return 0;

}

第7行是 n == 1 吧,要不然你的 i 初始值一直都是1,无论你的 n 输入多少都不会执行下面的 else if 了

需要把m设为最终的输出答案,只需要让结果等于m就行。其他地方不用m