为了账号安全,请及时绑定邮箱和手机立即绑定

C语言老是出现-1.#IND00该怎么解决

C语言老是出现-1.#IND00该怎么解决

C
慕后端8527005 2018-04-07 14:09:54
#include<stdio.h>#include<math.h>int j(int n){ if(n==1||n==0) { return 1; } else return n*j(n-1);}main(){ int c,r; double n,t; double p,e=2.7; r=1000/(10*60); printf("请输入时间t="); scanf("%lf",&t); printf("请输入人流n="); scanf("%lf",&n); c=j(n); p=pow(r*t,n)*pow(e,-r*t)/c; printf("当%lf分钟内有%lf游客来的概率为%6.5lf\n",t,n,p);}
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

一般出出现“#IND”就表示进行了无意义的算数运算(很可能是除零之类的)。

虽然不知道你的测试数据是什么,不过根据你的代码我猜测下:

j 函数计算阶乘,当参数 n 稍微大些的话(我猜应该不超过几十),其阶乘结果就会超过 int 的取值范围,结果开始为负值,这时你的这个程序的计算就已经不可能正确了。而当参数再大些的话,阶乘结果可能就归零了。这样计算 p 的那一步就是算数除零了。

你输入的 n 是不是超过了几十?

查看完整回答
反对 回复 2018-04-07
  • 慕后端8527005
    慕后端8527005
    我就算不除那个阶乘,结果还是一样的。
  • onemoo
    onemoo
    还有一点,当 t 和 n 过大时,pow(r*t,n) 可能会得到无穷大值,一般会出现有 #INF 字样
  • 1 回答
  • 0 关注
  • 6053 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信