用户输入的最大数量

时间:2013-12-16 18:30:53

标签: c for-loop long-integer

我制作了这个简单的程序来计算给定数字的阶乘。对于数字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;
 }

我意识到当用户输入大量数据时程序会崩溃。(这是合乎逻辑的)

  1. 我想要这个数字的限制。 (即用户可以输入的最大数量,而不会导致程序崩溃。)
  2. 有没有办法增加这个数字?

感谢任何帮助。

2 个答案:

答案 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有关 或者使用字符串和数组来处理大数字