c语言中这个程序哪个地方出错了?为什么输出的是nan?

#include<stdio.h>
#include<math.h>
double f(double x)
{return sqrt(4-x*x);}
double ladderShape(double a,double b)
{double s1,s2,n,i,h,s,m=1e-6;
s2=0;n=100;
do{
s1=s2;n=2*n;h=(b-a)/2;i=1;s2=0;
do{
s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;i=i+1;}
while(i<=n);}
while((fabs(s1-s2))>(m*(fabs(s2)+fabs(s1))));
return s2;}
main()
{ double a,b,s;
printf("请输入a,b\n");
scanf("%lf%lf",&a,&b);
s=ladderShape(a,b);
printf("积分结果为%lf",s);
return 0;
}

程序已经改好:

#include<stdio.h>
#include<math.h>
double f(double x)
{return sqrt(4-x*x);}
double ladderShape(double a,double b)
{double s1,s2,n,i,h,s,m=1e-10;    //有改动
s2=0;n=100;
do{
s1=s2;n=2*n;h=(b-a)/n;i=1;s2=0;    //有改动
do{
s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;i=i+1;}
while(i<=n);}
while((fabs(s1-s2))>(m*(fabs(s2)+fabs(s1))));
return s2;}
main()
{ double a,b,s;
printf("请输入a,b\n");
scanf("%lf%lf",&a,&b);
s=ladderShape(a,b);
printf("积分结果为%lf",s);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-11-20
NaN 的意思是 “Not a Number”, 不是一个数值,或无法表示的数值,例如 溢出了, 负数求对数了,分母为0了。 你可以加入一些打印语句,检查数据是否有错。 再有 A..追问

请问怎么修改?

本回答被网友采纳

c语言中这个程序哪个地方出错了?为什么输出的是nan?
程序已经改好:include<stdio.h>#include<math.h>double f(double x){return sqrt(4-x*x);}double ladderShape(double a,double b){double s1,s2,n,i,h,s,m=1e-10; \/\/有改动s2=0;n=100;do{s1=s2;n=2*n;h=(b-a)\/n;i=1;s2=0; \/\/有改动do{s=(f(a+i*h)+f(a...

c语言的问题,为什么输出是nan?
结论:当在C语言编程中遇到输出为"NaN"的情况,这通常意味着遇到了无法表示为数值的数学运算异常,例如数值溢出、对负数求对数或除以零等。要解决这类问题,程序开发者需要仔细检查数据和运算过程。首先,检查代码中可能存在的错误源。增加适当的打印语句可以帮助定位问题所在,比如检查数据是否正确,运算是否...

...了个程序,但是不管怎么样输出都是-nan,求问为什么
百度:NaN,是Not a Number的缩写。一种计算机用语。NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。恩,这组数据的第三个三角形的三个点是(0,0)、(1,1)、(4,4)。成一条直线了,到 s = sqrt( p1 * ( p1 - length1 ) * ( p1 - length2 ) * ...

C语言中出现“nan(ind)”是什么意思
在C语言中,遇到"nan(ind)"这样的表达式,意味着计算结果出现了非数值状态。"nan"是"not a number"的缩写,表示计算过程中产生的数值不符合常规,无法被赋予数学意义。例如,当试图对负数开平方,对负数取对数,或者进行诸如0.0除以0.0、0.0乘以无穷大等运算时,结果会变为"nan"。"ind"则代表"in...

C语言编程,计算结果是“nan”,为什么?谢谢
因为 对输出的那个变量没有付初值 而对其进行计算了

c语言编程出现输出-nan(ind),哪里错了,本来计算1-1\/2+1\/3...+1\/9...
结论是,当使用C语言编程计算1-1\/2+1\/3...+1\/9-1\/10时,可能会出现输出结果为-nan(ind)的情况。下面我们将分析代码并找出可能的问题。在C语言的程序中,函数suanfa(int n)用于计算一系列分数的和,然后在main函数中调用它并输出结果。问题可能出在while循环部分,特别是处理奇数项和偶数项时...

c语言,输入三个点坐标,求围成的三角形面积,请大家帮忙看下程序错...
注意输入格式,double 用 %lf 不能用 %f,(输出 允许 用 %f) .输入数据 格式,你 语句 用 逗号分隔格式,数据也要含 逗号。

c++运行结果为什么出现NAN
5、得到inf时就查看是否有溢出或者除以0,得到nan时就查看是否有非法操作。6、C语言的头文件<float.h>中,有定义的常量DBL_MAX,这个常量表示“能表示出来的最大的双精度浮点型数值”。<float.h>中还有常量DBL_MIN,DBL_MIN表示可以用规格化表示的最小的正浮点数,但DBL_MIN并不是最小的正浮点数,...

c语言中输出-nan是什么意思
超出类型表示的范围似乎会答应nan 机器表示不了的也会输出nan

C语言中INF和NAN是什么意思
在C语言中,INF和NAN是两个特殊的浮点数值,用于表示特定的数学状况。INF代表无穷大,当计算结果超出浮点数表示范围时,如阶码部分溢出,就会得到INF。而在进行一些未定义的操作,如对-1开平方,会得到NAN,即非数,表示计算结果无法确定。在C语言中,NAN的一些特性值得注意:NAN不能与其他数值进行比较...

相似回答