发现一个异常 2017-01-20 05:28 采纳率: 0%
浏览 2657

如何用C语言实现1000的阶乘

求大神解决?
或者告诉我应该解决什么问题?
怎样解决?
(学生一枚,求大神帮忙解决,!)

  • 写回答

8条回答

  • 强化脑细胞 2017-01-20 10:22
    关注

    大数的问题:用字符数组去存储值
    #include
    #include
    #include
    #include
    #include
    #define maxs 10000
    //数组的设置的大小,不能开太大,这样的话扫描的时间太长会超时,也不能太小。。。。
    using namespace std;
    int a[maxs];
    int main()
    {
    int n,i,j,y;
    while(scanf("%d",&n)!=EOF)
    {
    memset(a,0,sizeof(a));//把数组全部设置为0
    for(i=1,a[maxs-1]=1;i<=n;i++)//数组的高位存放数的低位,把最低位置成1,从1乘到n
    {
    y=0;//余数
    for(j=maxs-1;j>=0;j--)
    {
    a[j]=a[j]*i+y;
    y=a[j]/10000;//得到乘法之后的结果
    a[j]=a[j]%10000;//得到进位
    }
    }
    for(i=0;i<maxs;i++)//从左到右扫描,第一个不是0的跳出
    if(a[i])break;
    printf("%d",a[i++]);//输出第一个不是0的
    for(j=i;j<maxs;j++)
    printf("%04d",a[j]);//注意中间的数字,比如12,由于在数的中间要输出0012
    printf("\n");
    }
    return 0;

    评论

报告相同问题?