用于计算c ++系列之和的程序

时间:2017-04-29 07:53:41

标签: c++

我是编程新手,我正在编写一个基于两个输入(x和n)来计算系列总和的代码

enter image description here

这是我到目前为止所做的:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int k,n;
    double x, sn=0;
    cout<<"enter n:";
    cin>>n;
    cout<<"enter x:";
    cin>>x;
    for(k=1;k<=n;k++)
    {
        sn+=(pow(-1, (1+k)))*((pow(x, k))/k);
    }
    cout<<sn;
    cout<<endl;
    return 0;
}

我不确定我的代码中是否存在一些基本错误,或者数学表达式中是否存在错误。我一直都是0

2 个答案:

答案 0 :(得分:1)

main()更改为int main()。 C ++需要所有函数的类型说明符(尤其是main)。

说实话,我不确定如何在没有它的情况下编译它。

正如另外一个“fyi”,您也可以进行这两项更改(但它们没有必要)

  1. main()更改为int main(int argc, char const *argv[])。这是main的完整函数头,它允许您处理命令行参数。您的程序不会采用任何命令行参数,因此在这种情况下,简单的int main()更清晰(因此更可取)。

  2. return 0;作为main函数体中的最后一行。无论程序在结束时返回什么值,操作系统都能以某种方式知道程序是成功还是失败。从技术上讲,如果你不做任何其他事情并且你的程序正常终止,C ++会隐式返回0。尽管如此,在某些圈子中,明确地return 0;(或#include <stdlib.h>return EXIT_SUCCESS;)被认为是好的风格,而不是让返回的函数从块的末尾掉下来。

  3. 编辑:

    在回复您的编辑和评论时,问题可能在于其他地方。我会强烈建议查看Basile Starynkevitch对你的问题的评论中的链接。为了做到正确,浮点运算可能是一个棘手的问题。

    此外,请说明您正在使用的输入值。无论何时,只要您向其他人寻求帮助,这是一种通用做法,但在这种情况下,由于上述浮点运算问题,这一点尤为重要。

答案 1 :(得分:0)

删除昂贵的pow功能

double xk = 1;
for(k=1;k<=n;k++)
{
   xk *= x;
   if (k%2 == 0) { // k is even -> -1 ^ (1+k) = -1 * -1^even number = -1
    sn -= xk/k;
   } else {
    sn += xk/k;
   }
}

PS:这应该是一个评论 - 但评论使代码不可读