以下程序的输出结果是_______________。 #include <stdio.h> main() {int k=4,m=1,p; p=func(k,m); printf(

以下程序的输出结果是_______________。
#include <stdio.h>
main()
{int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
func(a,b)
int a,b;
{static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A、8,17
B、8,20
C、8,16
D、8,8

参考答案:A
不懂,求解释

第一次func(a,b)函数时,传递过来的两个值是4,1 即在func(a,b)函数中a=4,b=1 static int m=0,i=2,定义了两个静态变量,即一直战用内存,函数调用结束不释放,结果依然是上一次改变后的结果。
执行 i+=m+1 →即 i=2+0+1=3;
执行 m=i+a+b; → m=3+4+1=8;
执行 return(m) →返回 m=8;
printf("%d,",p); 输出 8

第二次执行func函数 依然传递 4,1
在func函数中,因为m 和i是静态变量,所以这时m=1,i=3
执行 i+=m+1; → i=3+8+1=12;
执行 m=i+a+b; → m=12+4+1=17;
执行 return(m) →返回 m=17;
printf("%d,",p); 输出 17

最后结果为 8 ,17
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-24
第一次调用函数 i+=m+1 得到 i=3 m=i+a+b 得到m=8 所以返回8
由于m和i是静态的 所以第二次调用时,i=3,m=8,然后i+=m+1 得到i=12 m=i+a+b m=17
返回17
因此答案为A本回答被网友采纳
第2个回答  2018-01-07
第二次执行func时,m=8
第3个回答  2017-11-17
在func函数中,因为m 和i是静态变量,所以这时m=没人发现这里应该是8吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网