http://acm.hdu.edu.cn/showproblem.php?pid=2011
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
int i,j;
unsigned m,n,a[100];
cin>>m;
if(m<100&&m>0)
for(int i=0;i<m;i++)
{
cin>>n;
if(n>0&&n<1000)
a[i]=n;
}
for(i=0;i<m;i++)
{
double sum=0;
for (j=1;j<=a[i];j++)
if (j%2==0)
sum+=(-1)*1.0/j;//又在这里犯错了,注意小数啊
else
sum+=1.0/j;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<sum<<endl;
}
return 0;
}
问题解决:编译时老是出现
2
1 2
1.00
1.00
原因是sum+=(-1)*1.0/j;语句错写成sum+=(-1)*1/j;导致去掉了+.05而结果变成1.00
仔细点。