问题描述:
给定一个整数n,输出它的阶乘。
代码来源:http://blog.youkuaiyun.com/hackbuteer1/article/details/6708834
#include<iostream>
using namespace std;
#define MAX 1000
int main(void)
{
int n;
while(scanf("%d",&n) == 1 && n >= 0)
{
int i,j;
int a[MAX]; //存数运算结果
int p , add; //p存储当前结果的位数,add为进位
a[1] = 1;
p = 1;
for(i=2;i<=n;++i) //循环与2,3,4.....n相乘
{
for(j=1,add=0;j<=p;++j) //让a[]的每位与i相乘
{
a[j] = a[j] * i + add;
add = a[j] / 10;
a[j] = a[j] % 10;
}
while(add>0) //如果h不为0
{
a[j] = add % 10;
add = add / 10;
++j;
}
p = j - 1; //将当前的位数赋给p
}
for(i=p;i>=1;--i) //a[]数组的前面是低位,后面高位
{
printf("%d",a[i]);
}
}
return 0;
}