关于C的分配问题

时间:2014-07-24 04:32:38

标签: c function

我目前在编程类分配的介绍中遇到了问题。我必须编写一个计算数字阶乘的函数。我知道如何做到这一点,你可以在下面看到。但是,作业要求:

通过从main调用它来测试你的功能。在循环中调用函数,输出结果如下:

Factorials:
1: 1
2: 2
3: 6
4: 24
5: 120
… etc.

当数字太大而无法容纳变量时,函数将停止工作。您应该使用哪种数据类型来计算最多因子?

我完全迷失了。我想知道是否有人可以指导我做什么?我在下面粘贴了我的代码:

#include <stdio.h>

int main(void){
    int number;

    printf("Enter an integer: ");
    scanf("%i", &number);

    factorial(number);

    return 0;
}


int factorial(int number){
    int fac = 1, count;

    count = number;
    while(count > 1){
        fac = fac * count;
        count = count - 1;
    }

    printf("The factorial: %i\n", fac );

}

2 个答案:

答案 0 :(得分:1)

您应该使用uintmax_t。它在stdint.h中定义。

它是一个无符号整数类型,平台支持最大宽度。

答案 1 :(得分:0)

您可以将unsigned long long类型用于较大的数字,但仅限于某些限制。