n的阶乘c语言,求解哪里错了~~

#include<stdio.h>
int main()
{
int n=1,N,i;
scanf("%d",&N);
if(N<0||N>20)
printf("shuruwuxiao!\n");
else
for(i=1;i<=N;i++)
n=n*i;
printf("%d\n",n);
return 0;
}
示例
input
3
5
-5
output
6
120
shuruwuxiao!
谢谢!

当你输入的N不在0~20时,输出是有误的,除了输出shuruwuxiao!,还输出了此时n的值1.
#include<stdio.h>
void main()
{
int n=1,N,i;
scanf("%d",&N);
if(N<0||N>20)
printf("shuruwuxiao!\n");
else
{
for(i=1;i<=N;i++)
n=n*i;
printf("%d\n",n);
}
}
函数的类型没必要定义成int,也不用返回值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-17
改为:
#include<stdio.h>
int main()
{
int n=1,N,i;
scanf("%d",&N);
if(N<0||N>20)
printf("shuruwuxiao!\n");
else
{ for(i=1;i<=N;i++)
n=n*i;
printf("%d\n",n);}//把这整块作为else块
return 0;
}
第2个回答  2013-03-17
#include<stdio.h>
int main()
{
int n=1,N,i;
scanf("%d",&N);
if(N<0||N>20)
printf("shuruwuxiao!\n");
else

{
for(i=1;i<=N;i++)
n=n*i;
printf("%d\n",n);
}

return 0;
}

你原来的代码输入无效也会打出个1,这样就成了
第3个回答  2013-03-17
#include<stdio.h>
int main()
{
int n=1,N,i;
scanf("%d",&N);
if(N<0||N>20)
printf("shuruwuxiao!\n");
else
{
for(i=1;i<=N;i++)
n=n*i;
printf("%d\n",n);
}
return 0;
}
第4个回答  2013-03-17
没错啊,输出也没错啊