c语言求50以内阶乘,C语言之数组50以内的阶乘.doc

C语言之数组50以内的阶乘

#include

//因为不知道50的阶乘有多少位,所以用100代

#define N 100

void fun(int);

int main()

{

int i;

// int n; //以下三行是计算输入一个数的阶乘

// printf("input the number:");

// scanf("%d",&n);

for(i=1;i<50;i++) fun(i);//此循环是通过调用函数,计算1到49的阶乘

return 0;

}

void fun(int n)

{

int a[N]={1}; //初始化数组,将第一个初始化为1,其余为0

int i,j,m,b=0;

for(i=2;i<=n; i++)//用循环实现阶乘的累乘

{

for(j=0; j<=i+20; j++)//为了减少计算,将循环条件改成i+20

{

m=a[j]*i+b;//用一个数去乘数组的一个元素,得到的结果加上上次剩余的数b

a[j]=m%10;//取个位保存到当前位置

b=m/10;//去掉个位,保留余下的部分,作为下次累加//以上三行是算法的核心

}

}

for(i=N-1; i>0; i--) if(a[i

你可能感兴趣的:(c语言求50以内阶乘)