|
|
我们求阶乘时,一般都是用一个int来存储结果的。而当数值较大时,我们就不能这样做了。现在我们可以用数组来存储结果,具体的做法就是将得到的结果分离,比如说4!=24,我们的做法是将24分离为2和4,然后分别用数组的两个元素来存储,然后到了5!的时候,我们的做法就是将5分别和之前4!的两个数组元素来做乘积(5*2 5*4),然后在对每个数组元素中大于10的结果进行分离,具体的程序如下,有兴趣的同学可以参考一下:
#include"stdio.h"
#define MAX 100
void main()
{
int Data[MAX];
int Digit;
int i,j,r,k;
int N;
for(i=1;i<=MAX;i++)
Data=0;
Data[0]=1;
Data[1]=1;
Digit=1;
printf("Enter a number what you want to calculus:");
scanf("%d",&N);
for(i=1;i<N+1;i++)
{
for(j=1;j<Digit+1;j++)
Data[j]*=i;
for(j=1;j<Digit+1;j++)
{
if(Data[j]>10)
{
for(r=1;r<Digit+1;r++)
{
if(Data[Digit]>10)
Digit++;
Data[r+1]+=Data[r]/10;
Data[r]=Data[r]%10;
}
}
}
printf("%d!= ",i);
for(k=Digit;k>0;k--)
printf("%d",Data[k]);
printf("\n");
}
}
这里的数组元素为100,如果想计算更大的数值的阶乘,可以将MAX变得更大一点。 |
|