作者:EvilMaknaeKYU | 来源:互联网 | 2024-10-25 13:38
对于大数的操作,可能超出int,甚至long的表示范围,对此,可以使用数组来存储大数,下列代码为求1000以内数的阶乘的代码,代码如下:#include&
对于大数的操作,可能超出int,甚至long的表示范围,对此,可以使用数组来存储大数,下列代码为求1000以内数的阶乘的代码,代码如下:
#include
#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)
{
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("\n");
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,运算成功!