本题要求实现一个打印非负整数阶乘的函数。
函数接口定义:
void Print_Factorial ( const int N );
其中N
是用户传入的参数,其值不超过1000。如果N
是非负整数,则该函数必须在一行中打印出N
!的值,否则打印“Invalid input”。
#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
void Print_Factorial ( const int N )
{
int s[3000]={0},j;
s[0]=1;
j=0;
if(N < 0)
{
printf("Invalid input");
}
else if(N == 0)
{
printf("1");
}
else
{
for(int i=1;i<=N;i++)
{
for(int k=0;k<=j;k++)
{
s[k]*=i;
}
for(int k=0;k<=j;k++)
{
if(s[k]>=10)
{
s[k+1]+=(s[k]/10);
s[k]%=10;
if(j < k+1)
j++;
}
}
}
for(int l=j;l>=0;l--)
{
printf("%d",s[l]);
}
}
}