苦思了下午还没解决的C问题!求解啊!!
<?php
/*问题是:输入N(2<N<2048),输入N!最右边的第一个非零的数字。例如,当N等于5时,输出2。下面是我写的:*/
#include "stdio.h"
main()
{ unsigned int sum=1;
int i,d,N;
A: scanf("%d",&N);
if(N>2&&N<2048){
for(i=1;i<=N;i++)
sum*=i;
printf("%d\t",sum);//问题就在这,这时sum为那个阶乘。
d=sum%10;//而取它最后一位后d成了0!!这是为什么啊~~
while(d==0){
sum=sum%10;
d=sum%10;
}
printf("%d\n",d);
}else{
printf("输入数字不在0-2048之内,请重新输入!\n");
goto A;
}
return 0;
}
?>
唔……上面的程序我改了下,现在输入5能输出2了,但是数字稍微大点就不行了,比如57
2 ! =2,
3 ! =6,
4 ! =24,
5!=120,
6!=720,
7!=5,040,
8!=40,320
9!=362,880
10!=3,628,800
11!=39,916,800
12!=479,001,600
13!=6,227,020,800
14!=87,178,291,200
15!=1,307,674,368,000
16!=20,922,789,888,000
17!=355,687,428,096,000
18!=6,402,373,705,728,000
19!=121,645,100,408,832,000
20!=2,432,902,008,176,640,000
<?php
//这里写代码
?>
[@code]
@终极神天
<?php
//这里写代码
?>
[@code]
@终极神天