关于C的分配问题

关于C的分配问题,c,function,C,Function,我目前正在为我的编程入门作业解决一个问题。我必须写一个计算数字阶乘的函数。我知道怎么做,正如你在下面看到的。然而,任务要求: 通过从main调用函数来测试您的函数。在循环中调用函数,输出如下结果: Factorials: 1: 1 2: 2 3: 6 4: 24 5: 120 … etc. 当数字太大而无法放入变量时,该函数将停止工作。您应该使用什么数据类型来计算最多的阶乘 我对此完全不知所措。我想知道是否有人能指导我做什么?我已将代码粘贴到下面: #include <stdio.h&g

我目前正在为我的编程入门作业解决一个问题。我必须写一个计算数字阶乘的函数。我知道怎么做,正如你在下面看到的。然而,任务要求:

通过从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 );

}
#包括
内部主(空){
整数;
printf(“输入一个整数:”);
scanf(“%i”和编号);
阶乘(数);
返回0;
}
整数阶乘(整数){
int fac=1,计数;
计数=数量;
而(计数>1){
fac=fac*计数;
计数=计数-1;
}
printf(“阶乘:%i\n”,fac);
}

您应该使用
uintmax\t
。它在
stdint.h
中定义


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

对于较大的数字,可以使用
无符号long-long
类型,但仅限于某些限制。

对于非常大的数字,没有内置数据类型。您需要自己编程,而不是使用第三方库(如gmp)。您的任务是向
main()
函数添加一个循环,并更改输出格式。您的另一个函数中已经有一个循环,因此您知道如何编写循环。您已经有了几个
printf
语句,因此您知道如何显示输出。具体地说,你遇到的问题是什么?“我对此完全不知所措。”——“这”是什么?您编写了“通过从main调用函数来测试您的函数。在循环中调用函数,并输出这样的结果…当数字太大而无法放入变量时,函数将停止工作。您应该使用什么数据类型来计算大多数阶乘?”你还没告诉我们你在哪方面迷路了,试试看。你甚至都没试过。在这里,我们希望人们在提问之前先解决问题。如果你写了阶乘函数,那么你已经知道怎么做了。是你写的,还是你从别人那里抄袭而不理解它?你还没有发布任何代码显示你尝试过。祝你好运我在这里完成了。当我使用unsigned long时,我得到了如下奇怪的数字:输入一个整数:32阶乘:-2147483648@user3799479试着阅读你的作业:“当数字变得太大而无法容纳你的变量时,函数将停止工作。”Prince我将如何显示以前数字的阶乘。假设我输入6,我想显示6之前的所有值,如下所示:阶乘:1:12:23:6 4:24 5:120 6:720我不知道怎么做,这是我完全陷入困境的部分。请参见问题下方的OP评论。。。他根本没试过。我怀疑OP是否编写了这个阶乘函数,因为编写它的人肯定知道如何迭代连续整数。@user3799479不需要任何证据来表示怀疑。。。我的理由很充分。