我目前正在使用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;
}
在此先感谢您提供任何提示,帮助或更正。
答案 0 :(得分:3)
这是您的问题:
scanf("%i", x);
应该是
scanf("%i", &x);
您需要使用x的地址,否则仅使用x,将被视为指向知道谁的指针。确保编译时带有警告,因为编译器应警告您类似的信息。我的编译器抱怨
“格式字符串'%i'需要一个'int *'类型的参数,而可变参数1的类型为'int'”