首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求10!解决办法

2012-03-25 
求10! #include stdio.h/*2~7是正确的*/voidmain(){inti,tt1i2while(i 10){tt*iii+1}printf(

求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的阶乘。

热点排行