在写计算机二级C语言题目时报错“Debug Assertion Failed” 编译环境是vs2010
应该是NONO子函数中fscanf函数的问题
这是我的代码:
#include <stdio.h>
#include <math.h>
double fun ( double eps) /*只有fun函数是我写的,剩下的代码都是题目给的*/
{
double s=1.0,s1=1.0;
int n=1;
while(s1>=eps)
{
s1=s1*n/(2*n+1);
s=s+s1;
n++;
}
return 2*s;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
double x ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%lf", &x) ;
fprintf(wf, "%lf\n", fun(x)) ;
}
fclose(fp) ;
fclose(wf) ;
}
/*
附题目 :
编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).
请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).
π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))
程序运行后,若输入精度为0.0005,则输出为3.141106
*/

以上是运行结果及报错内容,in.dat文件内容如下
以下是in.dat文件内容
0.0005
0.00005
0.000005
0.0001
0.00001
0.000001
0.0004
0.00004
0.000004
0.0003

我的解答思路和尝试过的方法:如下图所示,in.dat文件和源文件prog1.c(内容即上文中代码)在同一文件夹中,在该项目文件夹下也发现了out.dat文件(内容空白),因此判断是因为某些原因fscanf函数读取不到内容而报错,并排除in.dat文件无法打开的情况。(能力有限,只能推断出这么多了)

报错产生的原因和解决方案是什么QAQ,望各位专家不吝赐教!