问题
问答题
#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=%d\n",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); }