#include
using namespace std;
int main()
{
int n,m;
double sum1, sum2, s;
sum1 = 0; // 求1/1+1/3+1/5+...+1/99的和
for (n=0;n<=49;n++)
sum1 += 1.0/(2*n+1);
sum2 = 0;// 求-1/2-1/4-1/6-...-1/00的和
for(m=1;m<=50;m++)
sum2 += -1.0/(2*m);
s=sum1+sum2;
cout<<"1-1/2+1/3-1/4+...+1/99-1/100=";
cout<return 0;
}
由于结果是小数,所以要用double型来存储,另外 sum要用 += 累加,做除法的使用1换成用1.0,否则执行的是整数除法,只要分母n>1,1/n都是0,整数除法会截断小数部分,所以要用double。
你的代码其实可以简化
#include
using namespace std;
int main()
{
int n, m;
double sum;
m = 1;
sum = 0;
for ( n = 1; n <= 100; ++n ) {
sum += m * 1.0 / n;
m = -m;
}
cout << sum;
return 0;
}
s,sum1和sum2都不能用int 应该用float 或者double其他没错。
你对比一下我的就知道错在哪了,主要看那两个循环!(当然,我只是凭感觉帮你该动一下而已,没调试,你自己调试一下)#include
using namespace std;
int main()
{
int n,m,s,sum1=0,sum2=0;
for (n=0;n<=49,n++)sum1+=1/(2n+1);
for(m=1;m<=50;m++)
sum2+=1/(2m);
s=sum1+sum2;
cout<<"1-1/2+1/3-1/4+...+1/99-1/100=";
cout<return 0;
}
你的这个不太好改啊,我重编了一个,你看看#include
using namespace std;
int main()
{
float n,m=0,sum=0;
for(n=1;n<=100;n++)
{
if(m==0)
{
sum=sum+1/n;
m=1;
}
else
{
sum=sum-1/n;
m=0;
}
}
cout<<"1-1/2+1/3-1/4+...+1/99-1/100="<
} 运行结果是1-1/2+1/3-1/4+...+1/99-1/100=0.688172
请按任意键继续. . .