2 csdn acm CSDN_ACM 于 2017.01.16 16:10 提问

C语言阶乘计算。n!=1*2*3*…*n

#include
#define N 10000
int main()
{
int a[N]={1};
int k=0,l=1,n;
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j {
a[j]=a[j]*i+k;
k=a[j]/10000;
a[j]=a[j]%10000;
}
if(k)
{
a[j]=k;
l++;
k=0;
}
}
printf("%d",a[l-1]);
for(i=l-2;i>=0;i--)
printf("%04d",a[i]);
printf("\n");
return 0;
}
哪位大神可以告诉我这代码是什么意思怎么运行的,看不懂小白一名

2个回答

jhcconan614
jhcconan614   2017.01.16 21:52
已采纳
 #define N 10000
int main()
{
    int a[N] = { 1 };//
    int k = 0, l = 1, n;
    int i, j;
    scanf("%d", &n);//输入一个整数
    for (i = 1; i <= n; i++)//
    {
        for (j = 0; j<i;j++)//
        {
            a[j] = a[j] * i + k;//求阶乘的
            //给出上限10000,如果在所得阶乘结果在范围内,那么值不变;否则,去掉最高位
            k = a[j] / 10000;
            a[j] = a[j] % 10000;
        }
        if (k)//判断是否超出上限10000
        {
            a[j] = k;
            l++;
            k = 0;
        }
    }
    printf("%d", a[l - 1]);
    //计算结果:如:输入10,则输出8800,其正确结果为:3628800
    for (i = l - 2; i >= 0; i--)//
        printf("%04d", a[i]);
    printf("\n");
    system("pause");
    return 0;
}
LD0807
LD0807   2017.01.16 18:49

重点就是两个for循环,你把基本的语法看懂了应该这个不难吧。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!