对于大数的操作,可能超出int,甚至long的表示范围,对此,可以使用数组来存储大数,下列代码为求1000以内数的阶乘的代码,代码如下:
#include <stdio.h> #include<string.h> const int max=3000; int main() { int f[3000];//存放最终的结果 int i,j,n,c,tem; memset(f,0,sizeof(f)); scanf("%d",&n); f[0]=1; for(i=2;i<=n;i++) { c=0; for(j=0;j<max;j++) { tem=i*f[j]+c; c=tem/10; f[j]=tem%10; } } for(j=max-1;j>=0;j--) if(f[j]!=0) break; for(i=j;i>=0;i--) printf("%d",f[i]); printf(" "); return 0; }
对于这段代码的理解,可以利用最简单的例子来阐明。
例如,利用int 数组来存储结果,数组长度为4,数组名为a.
在45*33的运算中,利用小学的笔算方法如下:
在计算机语言中,我们是这样计算的,首先a[0]=5,a[1]=4,a[3]=0,a[4]=0;
33*a[0]=135,此刻将a[0]赋值为5,进位为c=13
第二步
33*a[1]+c=148,此刻将a[1]赋值为8,进位为c=14
第三步
33*a[2]+c=14,此刻将a[2]赋值为4,进位为c=1
第四步
33*a[3]+c=1,此刻将a[3]赋值为1,运算成功!