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

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

程序已经改好:

#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=0n=100

do{

s1=s2n=2*nh=(b-a)/ni=1s2=0    //有改动

do{

s=(f(a+i*h)+f(a+(i-1)*h))*h/2

s2=s2+si=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、首先需要知道matlab中nan元素是非数字元素,一般是无效的数据,如下图所示

2、然后输入a=[1 2 3 nan 4 5 nan 6],创建a矩阵,如下图所示。

3、然后在命令行窗口输入numel(find(isnan(a))),进行统计a矩阵nan元素的个数,如下图所示。

4、按回车键之后,可以看到a矩阵nan元素的个数为2,如下图所示。

5、最后也可以输入numel(a(isnan(a)))来统计a矩阵的nan元素个数,如下图所示。

百度:NaN,是Not a Number的缩写。一种计算机用语。NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。

恩,这组数据的第三个三角形的三个点是(0,0)、(1,1)、(4,4)。成一条直线了,到

s = sqrt( p1 * ( p1 - length1 ) * ( p1 - length2 ) * ( p1 - length3 ))

这条语句的时候实际是求0的平方根所以显示nan咯。

你可以试试这些数据:(2,2)、(3,3)、(4,4)等等。。。

修改的话,你先想想吧,需要再追问~


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12208862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存