nt 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);
}答案及为什么
nt 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);
}答案及为什么
fun函数是来求和的,但要注意有个static变量 static变量会把值保存到第二次的调用
所以第一次是1+2+3+4+5=15
但在求fun(b,4)时,是15+6+7+8+9=45
不过因为是s=fun(a,5)+fun(b,4)是 = 15 +45 结果为 60
结果:60
原因:因为sum为静态变量,它的作用域名为从它定义开始直到整个程序结束。而fun()函数的作用为求数组元素的和:
当fun(a,5)调用结束的时候,sum=15;当fun(b,4)执行的时候,sum的初始值还是为15不变,故fun(b,4)的结果为45,然后两部分求和:15+45=60