帮忙一道C语言题!

以下程序输出的最后一个值是
int ff(int n)
{ static int f=l;
f=f*n;
return f;
}
main()
{ int i;
for(I=1;I<=5;I++ printf(“%d\n”,ff(i));
}
详细谢谢

第1个回答  2008-08-01
//程序应该是这样的吧?
int ff(int n)
{ static int f=1;
f=f*n;
return f;
}
main()
{ int i;
for(i=1;i<=5;i++)
printf("%d\n",ff(i));
}

如果这样,那么最后的结果是120,static局部静态变量只能初始化一次,也就是第二到五次的时候static int f=1; 不起作用。你可以把f想象成一个全局变量,这样你就能明白了。
第2个回答  2008-08-01
由于f是静态变量,全局可用
第一次i=1,f=1 打印1
第二次i=2,f=2 打印2
第三次i=3,f=3*2=6 打印6
第四次i=4,f=4*6=24 打印24
第五次i=5,f=5*24=120 打印120本回答被提问者采纳
第3个回答  2008-08-01
fstatic变量一次声明,以后就不要再初始化了,所以他的值是根据程序的运行来变化的。
第一次f = f*i =1*1 = 1
f = 1*2 = 2
f = 2*3 = 6
f = 6*4 = 24
f = 24*5 = 120
第4个回答  2008-08-01
120....注意思静态变量就是的...
第5个回答  2008-08-01
120