题目
编写一个算法,计算 的阶乘
代码
/* 设计思路:自底向上迭代求值 */
#include <stdio.h>
#define maxSize 6000
int main()
{
int n; // 计算n的阶乘
// 新建短整型数组a[maxSize+1]:a[0]存放有效数据长度、a[1-maxSize]存放数据
short a[maxSize+1];
while(scanf("%d", &n))
{
a[0]=1;a[1]=1;
for (int i=2; i<=n; i++)
{
for (int j=1; j<=a[0]; j++)
a[j] *= i;
for (int j=1; j<=a[0]; j++)
{
short carry = a[j]/10;
if (j == a[0])
{
if (carry)
a[0]++;
a[j+1] = carry;
}
else
a[j+1] += carry;
a[j] %= 10;
}
}
for (int i=a[0]; i>=1; i--)
printf("%hd", a[i]);
printf("\n");
}
}
网友评论