(1+1/2)*(1+1/4)*(1+1/6)*···* (1+1/10) * (1-1/3) * (1-1/5)*···*(1-1/9)=?
#include <iostream>
using namespace std;
int main()
{
double sum1=1,sum2=1;
for(double i=2;i<=10;i=i+2)
{
sum1=sum1*(1+1/i);
}
for(double i=3;i<=9;i=i+2)
{
sum2=sum2*(1-1/i);
}
cout<<sum1<<endl;
cout<<sum2<<endl;
cout<<sum1*sum2<<endl;
//cout << "Hello world!" << endl;
return 0;
}
输出:1.1
错误写法:
#include <iostream>
using namespace std;
int main()
{
int sum1=1,sum2=1;
for(int i=2;i<=10;i=i+2)
{
sum1=sum1*(1+1/i);
}
for(int i=3;i<=9;i=i+2)
{
sum2=sum2*(1-1/i);
}
cout<<sum1<<endl;
cout<<sum2<<endl;
cout<<sum1*sum2<<endl;
//cout << "Hello world!" << endl;
return 0;
}
输出:1
原因:“/”是求商运算,整数类型会消掉所有小数值