自定义运算法则,通过整型数组存储大数的每一位。程序:
#include <iostream>
using namespace std;
int main()
{
int a[99999];
int i,j,n,c; //C表示进位
while(1)
{
cout << "输入要计算的阶乘n(0退出):" << endl;
cin >> n;
if(n < 1) break;
memset(a,0,sizeof(int) * 99999);
a[0] = 1,a[1] = 1;
for(i = 2;i < n+1;i ++)
{
c = 0;
for(j = 1;j <= a[0];j ++)
{
a[j] = a[j] * i + c;
c = a[j] / 10;
a[j] = a[j] % 10;
}
while(c)
{
a[j++] = c % 10;
c /= 10;
}
a[0] = j - 1;
}
cout << n << "的阶乘有" << a[0] << "位数!" << endl;
cout << "其结果是:" << endl;
for(i = a[0];i >= 1;i --)
cout << a[i];
cout << endl;
}
return 0;
}