读书人

求10!解决办法

发布时间: 2012-03-25 20:55:17 作者: rapoo

求10!

#include <stdio.h> /*2~7是正确的*/
void main()
{
int i,t;
t=1;
i=2;
while(i <=10)
{
t=t*i;
i=i+1;
}
printf( "%d\n ",t);
}
这个代码求2~~7是正确的~为什么求7以外的就不对了~!
请大家帮帮小弟~~
谢谢您了`

[解决办法]
由于结果大于INT的范围是-32768---32767,所以会溢出,可以改为:#include <stdio.h> /*2~7是正确的*/
void main()
{
int i;double t;
t=1.0;
i=2;
while(i <=10)
{
t=t*i;
i=i+1;
}
printf( "%f\n ",t);
}
[解决办法]
就是溢出的,阶乘数是很大的,要表示阶乘结果一般都用unsigned long或者double。
因为unsigned long的表示范围可以到2147483647,也就是最大到12的阶乘。
而double可以表示到1.7*10~308,也就可以表示到170的阶乘。

读书人网 >C语言

热点推荐