问题
单项选择题
以下程序的输出结果是______。
int f()
static int i=0;
int s=1;
s+=i; i++;
return s;
main()
int i, a=0;
for(i=0; i<5; i++)
a+=f();
printf("% d\n", a);
A) 20
B) 24
C) 25
D) 15
答案
参考答案:D
解析: 函数f中变量i为静态变量,函数f调用结束后变量i所占据的存储单元不会释放,而在主函数中f被调用5次,具体过程如下:
第1次调用f:s=s+i=1+0=1,i=i+1=1,主函数中a=a+f()=0+1=1
第2次调用f:s=s+i=1+1=2,i=i+1=2,主函数中a=a+f()=1+2=3
第3次调用f:s=s+i=1+2=3,i=i+1=3,主函数中a=a+f()=3+3=6
第4次调用f:s=s+i=1+3=4,i=i+1=4,主函数中a=a+f()=6+4=10
第5次调用f:s=s+i=1+4=5,i=i+4=5,主函数中a=a+f()=10+5=15
所以printf语句的输出结果为15。