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

新入门。。请教一下这题怎样做~~~

lok13920 发布于 2008-09-20 00:26, 978 次点击
1+1/2-1/3+1/4.......-1/19+1/20。。。请教一下简易的程序
11 回复
#2
thanatus2008-09-20 01:06
下面是我随手写的,仅仅加到1/20,已经编译过~运行结果是1.33123,
我也是初学c++,一起讨论下吧~

#include <iostream>

int main()
{
   
    using namespace std;
   
    double sum = 0.0, SUM;
   
    for(int i=2; i<21; i++)
    {
         
          if ( i % 2 == 0) sum += 1.0 / i ;
           
          if ( i % 2 != 0) sum += (-1) * (1.0 / i);
   
    }
   
    SUM = 1.0 + sum;
   
    cout<<"1+1/2-1/3+1/4.......-1/19+1/20="<<'\t'<<SUM<<endl;
   
    system("pause");
   
    return 0;
   
}
#3
blueboy820062008-09-20 08:19
if ( i % 2 == 0) sum += 1.0 / i ;
           
          if ( i % 2 != 0) sum += (-1) * (1.0 / i);

似乎没必要这样写,
单独定义个变量来控制符号似乎更好些:
比如:
f=1;
sum +=( 1.0 / i)*f

每循环一次就运行一次f=f*(-1);
#4
newyj2008-09-20 12:13
#include<iostream>
#incldue<math>
using namespace std;

int main()
{
  double num=1.0;
  for(int i=2;i!=21;++i)   
    num+=(1/i)*pow(-1,i);
  cout<<num<<endl;
  getchar();
  return 0;   
}
这个错在那里啊 ?
pow()不能这么用吗?
#5
守鹤2008-09-20 18:22
头文件的问题
#include  <cmath>就可以了
#6
newyj2008-09-20 19:55
改成<cmath>也不行 啊
#7
newyj2008-09-20 22:38
#include<iostream>
using namespace std;

int main()
{
  double num=1.0;
  int var=1;
  for(int i=2;i!=21;++i)
  {
    num+=(1/i)*(var);
    var=var*(-1);
  }
  cout<<num<<endl;
  getchar();
  return 0;   
}
改成这样 输出的是 1 不知道 为什么?
#8
thanatus2008-09-20 23:08
num+=(1/i)*(var);这句中用的是整数除法,就是说总是取1/i的整数部分,这样永远是0,
你把1改成1.0,利用隐士转换就可以了~或者可以把1改为1F,也或者改成float(1),后面是显式转换~
#9
newyj2008-09-20 23:29
谢谢了
那7楼的 哪个 为什么不对啊?
#10
thanatus2008-09-20 23:31
#include<iostream>
using namespace std;

int main()
{
  double num=1.0;
  int var=1;
  for(int i=2;i!=21;++i)
  {
    num+=(1/i)*(var);//把1改成1.0,或者可以把1改为1F,也或者改成float(1),后面是显式转换
    var=var*(-1);
  }
  cout<<num<<endl;
  getchar();
  return 0;   
}
为什么在8楼已经讲了呀~
#11
lionmusicyj2008-09-20 23:43
我的答案咋和你不一样呢?
#include <iostream>
using namespace std;
int main()
{
    int i;
    i=1;
    double sum;
    sum=0.0;
    for(i=1;i<=20;i++)
    {
          if(i%2)
           sum=sum-1.0/i;
           sum=sum+1.0/i;
    }
              cout<<sum;
              system("pause");
              return 0;
}
#12
thanatus2008-09-20 23:49
你看看i=1的时候sum是1吗?正负号的问题
1