m0_62399270 2021-10-29 13:45 采纳率: 90.9%
浏览 46
已结题

求n的阶乘(高精度)

为什么这串代码到33都是对的,34以后就都是错的了



#include<stdio.h>
int main()
{

    int n,i,a[999]={0},len=1,j;
    a[0]=1;
    scanf("%d",&n);
    for(i=1;i<n;i++)
    {
        int c=0;
        for(j=0;j<len;j++)
        {
            a[j]=a[j]*(i+1)+c;
            c=a[j]/10;
            a[j]=a[j]%10;

        }
        if(c!=0)
        {
            len++;
            a[j]=c;
        }

    }
    for(i=len-1;i>=0;i--)
        printf("%d",a[i]);

    return 0;
}
  • 写回答

1条回答 默认 最新

  • 於黾 2021-10-29 13:57
    关注

    数太大了你就定义成long,或者更大的类型
    int溢出了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月29日