编程学习网 > 编程语言 > C/C++开发 > 如何用c语言编写实现1000阶乘?(c语言怎么算1000的阶乘)
2022
07-01

如何用c语言编写实现1000阶乘?(c语言怎么算1000的阶乘)

如何用C语言实现1000的阶乘?看似一个很简单的计算,如果是Python只需要5行左右的代码,C语言实现却需要50行,因为C语言的数据位数是有限的,无法使用简单的累乘计算结果,该运算需要缜密的思维

代码如下:

#include <stdio.h>
#define MAX 10000

// 计算1000的阶乘
void Print_Factorial ( const int N );
int main(void)
{
    int N;
    printf("请输入想要求的阶乘:\n");
    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}

void Print_Factorial(const int N)
{
    int value[MAX] = {0};       // 存储结果
    int value_size = 1;         // 存储结果的位数
    int carry_Bit = 0;          // 存储进位的数字
    value[0] = 1;
    for(int num = 2; num <= N; ++num)
    {
        for(int i = 0; i < value_size; ++i)
        {
            int temp = value[i] * num + carry_Bit;  // temp中存的值等于上次运算的结果乘以这次需要累乘的数加进位数字
            value[i] = temp % 10;                   // 保留本位数据进入当前数组
            carry_Bit = temp / 10;                  // 进位数字等于temp除以10的商
        }
        while(carry_Bit != 0)                       // 出现需要进位的数字,处理进位数字carry_Bit
        {
            value[value_size] = carry_Bit % 10;     // carry_Bit有可能位数大于1,value数组每位只能存一位数
            ++value_size;                           // 数字位数加一
            carry_Bit = carry_Bit / 10;             // 再次计算下一位进位数字
        }
    }
    // 输出
    if(N >= 1)
    {
        printf("结果为:\n");
        for(int i = value_size-1; i >= 0; --i)
        {
            printf("%d", value[i]);
        }
        printf("\n");
    }
    else
    {
        printf("Error Input\n");
    }
}
演示:

以上就是“如何用c语言编写实现1000阶乘?(c语言怎么算1000的阶乘)”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取