C语言的菜鸟问题

intfac(intn){staticintf=1;f=f*n;return(f);}main(){inti;for(i=1;i<=5;i++)printf("%d!=%... int fac(int n)
{static int f=1;
f=f*n;
return(f);
}
main()
{int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
getch();
}
我要计算0到5的阶乘,
为什么i的初值改为0 就出错啦?而下面这个就可以???
int fac(int n)
{register int i,f=1;
for(i=1;i<=n;i++)
f=f*i
return(f);
}
main()
{int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}
展开
 我来答
liuzhi67
2010-06-13 · TA获得超过124个赞
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:113万
展开全部
你用static定义了静态变量
所以f=1这个赋值操作只会在第一次调用函数的时候进行一次赋值操作。。。
i=0后则f之后恒等于0了
你可以去掉static试试(当然,结果还是不对,呵呵)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友43ebde78e
2010-06-13 · TA获得超过1040个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:695万
展开全部
1:当i=0时,函数fac中f的值一直是0(没加当n=0时的判断);
2:fac循环中已经让f不为0了;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lymh07
2010-06-13 · TA获得超过355个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:118万
展开全部
上面一个i=0是,fac(0)时return就是0了
后面一个fac(0)时i=1直接return(f)就是1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式