问题
单项选择题
设有以下函数:f(int a) { int b=0; static int c=3; b++; c++; return(a+b+c); } 如果在下面的程序中调用该函数,则输出结果是______。 main() { int a=2, i;for(i=0; i<3; i++)printf("% d\n", f(a)); }
A.7 8 9
B.7 9 11
C.7 10 13
D.7 7 7
答案
参考答案:A
解析: 本题考查静态变量的问题。函数f中c是静态变量存放在静态存储区,在程序的整个运行期间都不释放占据的存储单元。函数f被调用3次,调用过程如下。 第1次调用;a=2、b=0、c=3,执行b++和c++后b=1、c=4,f(a)=a+b+c=2+1+4=7 第2次调用:a=2、b=0、c=4.执行b++和c++后b=1、c=5,f(a)=a+b+c=2+1+5=8 第3次调用:a=2、b=0、c=5,执行b++和c++后b=1、c=6,f(a)=a+b+c=2+1+6=9 所以输出结果为选项A。