#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 是不是超过了几十?
- 1 回答
- 0 关注
- 6053 浏览
添加回答
举报
0/150
提交
取消