注册 登录
编程论坛 C++教室

循环语句的题目,麻烦帮看下对不。

糖包包 发布于 2011-04-14 15:28, 534 次点击

计算1-1/2+1/3-1/4+……+1/99-1/100=?

c++   我用程序写好,等于2,不知道对不对啊?麻烦帮忙看下,谢谢了。

#include <iostream>
using namespace std;
void main()
{
    int n,i,sum1,sum2,sum;
    n=1;i=2;
    sum1=1;sum2=1/2;
    while(n<=100)
    {sum1=sum1+1/n;n=n+2;}
    while(i<=100)
    {sum2=sum2+1/i;i=i+2;}
    sum=sum1-sum2;
    cout<<"1-1/2+1/3-1/4+……+1/99-1/100="<<sum<<endl;
}
7 回复
#2
Lyone2011-04-14 15:46
void main()
{
    //int n,i,sum1,sum2,sum;
    double n,i,sum1,sum2,sum;//因为有小数,所以不能用int型
    n=1;i=2;
    sum1=1;sum2=1/2;
    while(n<=100)
    {sum1=sum1+1/n;n=n+2;}
    while(i<=100)
    {sum2=sum2+1/i;i=i+2;}
    sum=sum1-sum2;
    cout<<"1-1/2+1/3-1/4+……+1/99-1/100="<<sum<<endl;
}
#3
pangding2011-04-14 17:08
可是感觉用 int 结果也不会是 2 呀。
#4
qq10235692232011-04-14 17:21
程序代码:
#include <iostream>
using namespace std;
void main()
{
    int n,i;
    double sum1,sum2,sum;

    n=1;
    i=2;
    sum1=1.0d;
    sum2=1/2.0d;
   
    while(n<=100)
    {  sum1=sum1+1.0d/n;  n=n+2; }
  
    while(i<=100)
    {  sum2=sum2+1.0d/i;  i=i+2; }

    sum=sum1-sum2;

    cout<<"1-1/2+1/3-1/4+……+1/99-1/100="<<sum<<endl;
}
注意数据类型的转换!
int n=2;
double m=2;
1/n=0;
1/m=0.5;
#5
糖包包2011-04-14 18:19
太感谢各位了.~

不过,话说那个正确答案到底是多少啊?~
#6
Lyone2011-04-14 22:40
程序代码:
#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    double Sum = 0.0;
    for (int i=1;i<=100;i++)
    {
        if (i%2)
            Sum = Sum + 1.0/double(i);
        else
            Sum = Sum - 1.0/double(i);
    }
    cout<<Sum;
    return 0;
}
我这段代码运行结果是:0.6188172
#7
pangding2011-04-15 08:09
我算的结果和 6楼 一样。

反正算的项越多,这个东西的结果就应该越接近 ln2 = 0.69314718055994530941723212145818。
它是 ln(1+x) 在 x=1 点处的泰勒级数的前100项。
#8
糖包包2011-04-15 14:54
我表示不理解了,

我用2楼得算出来等于1.6什么什么的。
用4楼得算等于1.1什么什么的,
可是大致看一下,除了多了个.0其他的都一样啊,~
1