A-A+
#include<stdio.h>int f(int n){static int s=1;w
问题详情
#include<stdio.h>
int f(int n)
{static int s=1;
while(n)s*=n--;
return s;
}
main()
{int i,j;
i=f(3);j=f(5);
printf("The output is:n");
printf("i=%d j=%dn",i,j);
}
参考答案
正确答案:
The output is:
i=6 j=720
[解析]
#include<stdio.h>
int f(int n)
{static int s=1;/*s被定义为静态变量,函数f()退出时其值被保留,且再次进入该函数时不再被初始化,该变量所使用的值为最近一次凋函数f()时所得到的值。*/
while(n)s*=n--;
return s;
}
main()
{int i.j;
i=f(3);/*第…次凋用f(),s被初始化为1,运算过程中s的值被改变为6,所以i=6*/
j=f(5);/*第二次调用f(),s不再被初始化而是以值6参与本次运算,故j的值为6×5×4×3×2×1=720*/
printf("The output is:\n");
printf("i=%d j=%d\n",i,j);
}