程序运行输出结果是( ) )。

void fun(int *s)
{static int j=0;
do {s[j]=s[j]+s[j+1];}
while(++j<2);
}
main ( )
{int k,a[10]={1,2,3,4,5};
for(k=1;k<3;k++) fun(a);
for(k=1;k<5;k++) printf("%d",a[k]);
printf("\n");}
答案:35745
看不懂

fun函数的变量j是static变量,当函数退出以后不会被释放,值会被保留,第一次执行完fun()以后j=2,所以第2次执行fun()时j从2开始不是从0开始。