选择题   有以下程序
      #include<stdio.h>
      int fun(int x[],int n)
      { static int sum=0,i;
      for(i=0; i<n; i++) sum+=x[i];
      return sum;
      }
      main()
      { int a[]={1,2,3,4,5),b[]={6,7,8,9},s=0;
      s=fun(a,5)+fun(b,4);
      printf ('%d\n',s);
      }
      程序执行后的输出结果是______。
 
【正确答案】 B
【答案解析】[考点] 字符串、函数递归、标识符的作用域和存储类 静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在main函数中调用fun(a,5),执行for循环得到sum=0+a[0]+a[1]+a[2]+a[3]+a[4]=15;然后调用fun(b,4),因为sum为静态变量,再次调用时sum保留上次函数调用结束时的值,所以sum=15+b[0]+b[1]+b[2]+b[3]=45;返回sum的值,main函数中输出的s=15+45=60。