我制作了这个简单的程序来计算给定数字的阶乘。对于数字n,它是
n *(n-1)*(n-2).... *(n-(n-1))
以下是代码:
#include<stdio.h>
int main()
{
int i,n;
long fact=1;
printf("Enter a number: \t")
scanf("%d",&n);
for(i=0; i<=(n-1); i++)
{ if( n==0 || n==1)
fact =1;
else
fact*=i;
}
return 0;
}
我意识到当用户输入大量数据时程序会崩溃。(这是合乎逻辑的)
感谢任何帮助。
答案 0 :(得分:3)
通常在c和c ++中,最低要求是
signed char: -2^07+1 to +2^07-1
short: -2^15+1 to +2^15-1
int: -2^15+1 to +2^15-1
long: -2^31+1 to +2^31-1
long long: -2^63+1 to +2^63-1
因此要找出可以输入的数字的限制,您必须查找两个数字,其因子位于刚好低于长度的范围,即最小情况下的2 ^ 31 - 1 < / p>
要增加此限制,您可以考虑使用long long
或者unsigned long long
答案 1 :(得分:1)
尝试使用scanf(“%ld”,&amp; n)
或scanf(“%lld”,&amp; n),也与printf有关 或者使用字符串和数组来处理大数字