C语言。求过程

55.有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}mai... 55.有以下程序
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
展开
 我来答
雪凌梦冰乐琪儿
2020-03-14 · TA获得超过1.3万个赞
知道小有建树答主
回答量:778
采纳率:95%
帮助的人:264万
展开全部
答案是C,输出结果是60。

sum是定义在fun函数里的静态变量,每次调用fun函数时sum变量都存在,在函数调用之后sum的内存不会被释放,也就是说sum的值会保留下来。
s=fun(a,5)+fun(b,4),第一次调用fun函数时sum=0,此后sum被赋予了a[0]+a[1]+…+a[5]的值,也就是15,故fun(a,5)的返回值为15。
第二次调用fun函数时,由于sum是静态变量,内存没有被释放,故sum的初值仍是15而不是0。此后sum=sum+b[0]+b[1]+b[2]+b[3]=45,故fun(b,5)的返回值为45。
因此输出结果是60。
你也可以在fun函数的“return sum;”前面加一句“printf("%d\n",sum);”,用dev cpp看看输出结果,这样可以印证我的解释,也能加深印象。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式