从品牌网站建设到网络营销策划,从策略到执行的一站式服务
求阶乘没必要弄这么复杂,你非要用递归算法求阶乘也行,问题出在输入负数时,要有c语言终止程序的代码。
桂林网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联公司从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
这段代码就是:exit(-1);
修改源程序
得到正确结果
在整数表示范围内得到正确结果
不过源程序还是有问题,如果阶乘的最终结果数值非常大时,超出int的表示范围,就会出错。
超出整数表示范围得到错误结果
这就需要修改数据类型int为double,这里给出更简单的代码:
得到正确的运行结果:
修改数据类型可得到正确的结果
可能是超出了整数所能表达的范围。因为通常整数的范围是-32768~32767。建议你把n和乘积的变量定义成长整型或者浮点型即可。
long double 改为 double,
%d 改为 %lf
#include stdio.h
int main()
{
double s = 0, t = 1, n;
for (n = 1; n = 20; n++)
{
t *= n;
s += t;
}
printf("1!+2!+3!+...+20! = %.0lf\n",s);
return 0;
}
// 输出:1!+2!+3!+...+20! = 2561327494111820288
另外,你的程序求的是 19!。
你计算100!呀,int存不下的,这个结果太大了,溢出了,所以可能会出现结果为负数,哪怕不是负数结果也不是正确的。
20的阶乘是一个很大很大的数,你定义一个int型变量是不够的,溢出了,用浮点型吧.
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图