大侠些·接招啊·小菜鸟求救C++函数

来源:百度知道 编辑:UC知道 时间:2024/09/24 04:36:42
/*
一球百米落下,每次返回原来一半的高度,
再落下,10次后经历多少米?第10次落地后反弹有多高?
*/

#include<iostream>
#include<conio.h>
using namespace std;
void main(){
int sum=0;
for(int n=1; n<=9; n++)
sum=sum+200/2^n;//不能用浮点相加?为什么?结果应该是小数,只
int sum 能用,浮点定义sum就不行了?
{
cout<<"10次后总距离"<<fixed<<100+sum;
cout<<endl;
cout<<fixed<<200/(2^9);//结果明显是错的?
}
getch();
}
结果为1017 18怎么显示准确的结果啊?大哥些·救命啊~~
结果明显应该是一个小数,应该是关于浮点数字间的累计问题,我希望精确小数点后几位,实在觉得我那菜的不好改,麻烦题目在上面,大侠些自己做一个吧·自己做的我再加十分。

#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
float sum=50;
float hight=100;
for(int n=0; n<10; n++)
{
hight /= 2;
sum += hight*2;
}

cout<<"10次后总距离:"<<sum<<endl;
cout<<"10次后反弹的高度:"<<hight<<endl;
}

200是整数,2^n也是整数,所以200/2^n结果也为整数,要强转一下,改成(double)200/2^n,或者200.0/2^n
你的sum定义的就是整数啊,怎么可能得到小数。
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
double sum=0.0;
for (int n=1; n<=10; n++)
{
sum += 100.0/pow(2.0,n);
cout << n;
cout<<"次后总距离"<<fixed<<100+sum;
cout<<endl;
}
cout<<fixed<<100.0/(2^9);
getch();
}
这个可以了

#include <stdio.h>