问题
单项选择题
有以下程序:
#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;
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);
程序执行后的输出结果是( )。
A.45
B.50
C.60
D.55
答案
参考答案:C
解析: 静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在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。