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 展开
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 展开
1个回答
展开全部
答案是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看看输出结果,这样可以印证我的解释,也能加深印象。
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看看输出结果,这样可以印证我的解释,也能加深印象。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询