c语言求阶乘问题,希望高手指导本菜鸟改错,在线等,不胜感激

2025-02-26 04:05:52
推荐回答(5个)
回答1:

#include 
//求一个数的阶乘,结果对10007取余
int main()
{
    int N;
int input[100];
int i;
    unsigned long fac(int n);
N = 0;
while(scanf("%d",&input[N])&&(input[N]!=-1)&& N <100) //现将输入存到缓冲区
    {
        N++;
    }

for(i = 0 ;i <  N; i++)
{
 printf("%d\n",fac( input[i]) %10007);
}


    return 0;
}
unsigned long fac(int n)
{
    if(n==0||n==1) return 1;
    else return fac(n-1)*n;
}

 结果

1

2

3

4

-1

1

2

6

24

请按任意键继续. . .

回答2:

你的代码没有问题啊,唯独就是输入不是-1的负数的话会死机,改成N>=0就好了。

 #include 
//求数阶乘结10007取余
int main()
{    
 int N;    
 unsigned long fac(int n);    
 while(1)   
 {        
  scanf("%d",&N);
  fflush(stdin);
  if(N<0)
   break;
  else
   printf("%d\n", fac(N)%10007); 
 }
 return 0;
}
unsigned long fac(int n)
{    
 if(n==0||n==1) 
  return 1;    
 else 
  return fac(n-1)*n;
}

回答3:

#include 

//求一个数的阶乘,结果对10007取余
unsigned long fac(int n);

int main()
{
    int N;
    while(scanf("%d",&N))
    {
        if(N == -1) break;
        printf("%d\n", fac(N)%10007);
    }
    return 0;
}

unsigned long fac(int n)
{
    if(n==0||n==1) return 1;
    else return fac(n-1)*n;
}

有错误贴上来

回答4:

你遇到的是什么问题?大概说一下

回答5:

程序没有错误吧?