【发布时间】:2014-07-24 04:32:38
【问题描述】:
我目前在编程课程作业的介绍中遇到了一个问题。我必须编写一个计算数字阶乘的函数。我知道该怎么做,如下所示。然而,作业要求:
通过从 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 );
}
【问题讨论】:
-
对于非常大的数字没有内置数据类型。您需要自己编写程序,而不是使用 gmp 等第三方库。
-
您的任务是向
main()函数添加一个循环,并更改输出格式。您已经在其他函数中有一个循环,因此您知道如何编写循环。您已经有几个printf语句,所以您知道如何显示输出。具体来说,您遇到的问题是什么? -
“我完全迷失了。” - 这是什么”?你写了“通过从主函数调用它来测试你的函数。在循环中调用函数,输出这样的结果......当数字太大而无法容纳你的变量时,该函数将停止工作。应该使用什么数据类型你用来计算最多的阶乘?” -- 你还没有告诉我们你迷失在哪一部分。
-
试一试。你甚至没有尝试过。在 SO,我们希望人们在提出问题之前先尝试解决问题。如果您编写了该阶乘函数,那么您已经知道如何去做。是你写的,还是从别人那里抄来的,没看懂?
-
您尚未发布任何代码表明您已尝试过。祝你好运......我在这里完成了。