c语言阶乘函数输出负值,c语言负数

C语言阶乘为什么填入任何负数结果都为8?

求阶乘没必要弄这么复杂,你非要用递归算法求阶乘也行,问题出在输入负数时,要有c语言终止程序的代码。

桂林网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联公司从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

这段代码就是:exit(-1); 

修改源程序

得到正确结果

在整数表示范围内得到正确结果

不过源程序还是有问题,如果阶乘的最终结果数值非常大时,超出int的表示范围,就会出错。

超出整数表示范围得到错误结果

这就需要修改数据类型int为double,这里给出更简单的代码:

得到正确的运行结果:

修改数据类型可得到正确的结果

为什么C语言有的自然数的阶乘是负数

可能是超出了整数所能表达的范围。因为通常整数的范围是-32768~32767。建议你把n和乘积的变量定义成长整型或者浮点型即可。

C语言求1到20阶乘的和,出来的是负数

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!。

C语言,为什么它的运行结果为负值?

你计算100!呀,int存不下的,这个结果太大了,溢出了,所以可能会出现结果为负数,哪怕不是负数结果也不是正确的。

C语言求阶乘程序,不知道哪里错了。请各位帮我指点一下,谢谢!可以运行,但是结果是一个负数。

20的阶乘是一个很大很大的数,你定义一个int型变量是不够的,溢出了,用浮点型吧.


当前标题:c语言阶乘函数输出负值,c语言负数
文章分享:http://scyanting.com/article/hdcogc.html