以下是简易的代码,因为受数据类型的限制,所以表示的数据范围有限,
故在表示大数据的时候,应该采用数组存储。
同时,在采用数组存储的时候,应该将数组声明为全局变量或static修饰,这样做的目的是使分配的内存空间在堆内存中。
代码如下:
- // 1000 的阶乘 2568 位
- #include <stdio.h>
- int a[3000];
- void show(int k)
- {
- int i=0;
- printf("位数 %d 位\n",k);
- for (i=k-1; i>=0; i--)
- {
- printf("%d",a[i]);
- }
- }
- int fanc(int n)
- int w=0;
- int i=0, j=0;
- int t=n;
- int k=0; // 表示数据的位数。
- i=0, k=0;
- while(t)
- a[i++] = t%10;
- t/=10;
- k++;
- for (j=n-1; j>1; j--)
- {
- w=0; // 表示进位
- for (i=0; i<k; i++)
- {
- t = a[i]*j+w;
- a[i] = t%10;
- w = t/10;
- }
- while(w)
- {
- a[i++] = w%10;
- w/=10;
- k++;
- }
- return k;
- }
- int main()
- int n;
- int k=0;
- scanf("%d",&n);
- k = fanc(n);
- show(k);
- printf("\n");
- return 0;
- }