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));
} 展开
{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));
} 展开
3个回答
展开全部
你用static定义了静态变量
所以f=1这个赋值操作只会在第一次调用函数的时候进行一次赋值操作。。。
i=0后则f之后恒等于0了
你可以去掉static试试(当然,结果还是不对,呵呵)
所以f=1这个赋值操作只会在第一次调用函数的时候进行一次赋值操作。。。
i=0后则f之后恒等于0了
你可以去掉static试试(当然,结果还是不对,呵呵)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1:当i=0时,函数fac中f的值一直是0(没加当n=0时的判断);
2:fac循环中已经让f不为0了;
2:fac循环中已经让f不为0了;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面一个i=0是,fac(0)时return就是0了
后面一个fac(0)时i=1直接return(f)就是1
后面一个fac(0)时i=1直接return(f)就是1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询