解一个程序

来源:百度知道 编辑:UC知道 时间:2024/05/21 02:53:23
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);
}
是怎样得出答案60的?
i也是static型,第一次i=5的值不会保留吗?

由于sum是static的,所以,第一次调用后,sum=15,之后fun(b,4)就是从这个15开始加上去的。所以
s=15 + (15+30)=60
i是static的,但for循环中令i=0,所以在这个程序中static i意义不大。
估计是我国的砖家想出来迷惑人的。

fun()是计算总和的函数
所以a[]的总和为15
b[]的总和为30

static int sum=0,i;
这个使a[]的总和也累加到fun(b,4)的结果中,所以s=15+(15+30)=60

问题补充:
for循环每次都先把i=0,所以。。。

15 + (15+30)