本题要求实现一个打印非负整数阶乘的函数。
函数接口定义:
void Print_Factorial ( const int N );
其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。
输入样例:
15
输出样例:
1307674368000
<模拟手算>
void Print_Factorial ( const int N )
{
static int a[1000000];
int i,j;
int temp,jw;
int len=1;
a[1]=1;
for(i=2;i<=N;i++)
{
jw=0;
for(j=1;j<=len;j++)
{
temp=a[j]*i+jw;//中间量
a[j]=temp%10;//实际保留
jw=temp/10;//进位
if(j==len&&jw!=0)
len++;
}
}
if(N<0)
printf("Invalid input\n");
else
{
for(i=len;i>=1;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}