| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 978 人关注过本帖
标题:新入门。。请教一下这题怎样做~~~
只看楼主 加入收藏
lok13920
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-20
收藏
 问题点数:0 回复次数:11 
新入门。。请教一下这题怎样做~~~
1+1/2-1/3+1/4.......-1/19+1/20。。。请教一下简易的程序
搜索更多相关主题的帖子: 入门 
2008-09-20 00:26
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
得分:0 
下面是我随手写的,仅仅加到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;
   
}
2008-09-20 01:06
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
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);

2008-09-20 08:19
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
#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()不能这么用吗?
2008-09-20 12:13
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
头文件的问题
#include  <cmath>就可以了
2008-09-20 18:22
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
改成<cmath>也不行 啊
2008-09-20 19:55
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
#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 不知道 为什么?
2008-09-20 22:38
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
得分:0 
num+=(1/i)*(var);这句中用的是整数除法,就是说总是取1/i的整数部分,这样永远是0,
你把1改成1.0,利用隐士转换就可以了~或者可以把1改为1F,也或者改成float(1),后面是显式转换~
2008-09-20 23:08
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
谢谢了
那7楼的 哪个 为什么不对啊?
2008-09-20 23:29
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
得分:0 
#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楼已经讲了呀~
2008-09-20 23:31
快速回复:新入门。。请教一下这题怎样做~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013468 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved