N倒数之和[分类错误]

时间:2015-11-02 14:29:52

标签: c++

#include <iostream>
#include <math.h>
#include <ctype.h>

using namespace std; 
int main()
{
  int n=0,tot=0;
  float sum = 0;
  float average = 0;
  float product = 1;


  cout<<"Type an integer and press Enter:\n";
  cin>>n;
  /*
     Your logic goes here
  */
  for(int i=1;i<=n;i++){
       cout<<sum<<endl;
       sum= sum+(1/i);
       product=product*1/i;
       tot++;
   }
  cout<<"Sum, product and average of reciprocals are:\n"; 
  cout<<sum<<endl;
  cout<<product<<endl;
  cout<<average<<sum/tot<<endl;
} 

任何人都请告诉我我做错了什么,我的总和总是等于一,我不知道为什么。我把cout和每次迭代打印出来&#34; 1&#34;。我的逻辑是对的,但是我找不到一些错误。

2 个答案:

答案 0 :(得分:1)

以下一行

sum= sum+(1/i);

整数除法,当i = 1评估为1时,否则当i&gt; 1,它将为0.我会使用1.0/i来强制浮点除法

编辑:我还会对您的product更新进行更改

答案 1 :(得分:1)

对于大于1的所有1/i

i将为0.整数除法。您需要将1/i替换为1.0/i来解决此问题。

请参阅ideone here