问题 单项选择题

有下列程序:
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);

程序执行后的输出结果是( )。

A.45

B.50

C.60

D.55

答案

参考答案:C

解析: 在函数int fun(int x[], int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数int fun(int x[], int n)的功能是求出数组x[]各个元素的和。所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

选择题
填空题