问题
单项选择题
有以下程序:
#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);
程序执行后的输出结果是( )。
A) 45
B) 50
C) 60
D) 55
答案
参考答案:C
解析: 本题主要考查的知识点是静态局部变量的运用。如果在定义一个局部变量时使用了static关键字,则这个局部变量就被定义成了一个静态局部变量。一般的局部变量随着函数被调用而诞生,在函数返回时被销毁。而静态局部变量在函数调用结束后不会被销毁,在下一次该函数被调用时,还会保留上一次函数调用结束时的值。本题中fun()函数通过一个for循环来累计形参数组x的前n个元素之和。在主函数中,第1次调用fun(a,5)时,返回的值应该是数组a的前5个元素的和,而第2次调用fun(b,4)时,返回的值除了本次累计的数组b前4个元素和之外,还有上次累计的数组a的前5个元素的和,所以累加结果为60。