C程序中的段冲突(生成“ core”)错误

时间:2019-04-06 19:56:13

标签: c

我目前正在使用c程序,该程序使用Leibniz求和来计算pi值,但是一旦执行该程序,我就会在控制台中收到错误“段违反(生成'core')”。另外,我已经检查了类似的问题,但仍无法将该信息放入我的问题中。这是我的代码:


#include <stdio.h> 

double calPi(int x);


double calPi(int x)
{
    double sum;
    int i;

    sum=0.0;

    for (i=0; i<=x; i++)
    {
        if ((i=2)||((i%2)==0))
        {
            sum=sum+(1/(2*i+1));
        }
        else sum=sum-(1/(2*i+1));
    }

return 4*sum;
}


int main(void)

{
    int x;
    double PI;

    printf("Enter the number of terms you want to calculate");
    scanf("%i",x);

    PI=calPi(x);

    printf("Pi value is: %f", PI);

    system("pause");

    return 0;
}

在此先感谢您提供任何提示,帮助或更正。

1 个答案:

答案 0 :(得分:3)

这是您的问题:

scanf("%i", x);

应该是

scanf("%i", &x);

您需要使用x的地址,否则仅使用x,将被视为指向知道谁的指针。确保编译时带有警告,因为编译器应警告您类似的信息。我的编译器抱怨

“格式字符串'%i'需要一个'int *'类型的参数,而可变参数1的类型为'int'”