问题 填空题

以下程序的输出结果是______。
#include<stdio.h>
int fun(int x)
static int t=0;
return(t+=x);

main( )
int s,i;
for(i=1;i<=5;i++) s=fun(i);
prinff("%d\n",s);

答案

参考答案:O

解析: 静态局部变量static在静态存储区内分配存储单元,其特点是在程序运行期间不释放存储空间,即再次调用函数时,保留上次退出时就结果,静态局部变量只赋一次初值。main函数中5次调用fun函数:第一次fun(1)调用,静态局部变量t被赋初值为0,计算表达式t+=x(t=0+1),返回1;第二次fun(2)调用,静态局部变量t不再被赋初值为0,而是继续使用上次退出程序时的值1,计算表达式t+=x(t=1+3),返回3;第三次fun(3)调用,静态局部变量t继续使用上次退出程序时的值3,计算表达式t+=x(t=3+3),返回6;第四次fun(4)调用,静态局部变量t继续使用上次退出程序时的值6,计算表达式t+=x(t=6+4),返回10;第五次fun(5)调用,静态局部变量t继续使用上次退出程序时的值10,计算表达式t+=x(t=10+5),返回15。在main函数中,输出最后一次的调用结果15。

单项选择题
单项选择题