C语言第十三题,求过程,拜托了各位!

 我来答
sdwffzlll
2016-05-24 · TA获得超过758个赞
知道小有建树答主
回答量:498
采纳率:85%
帮助的人:232万
展开全部
从main开始向下执行,
s=a(a=2), 此时s=2;

再看for循环
当i=0时 s = s+ f(0) ,即 s = 2 + f(0);
f(0)的运算过程:
0%2 =0所以执行else分支,
在这个分支中定义了一个静态变量a(它的有效范围是在这个else范围内)此时a=5(定义并赋值), t=t+a=5, a=a+1=6(注意,这个a是在else分支的范围内,出了这个范围,在f(0)方法内还存在一个静态变量,它的初始值是3)
执行return操作 t = t +a = 5 + 3 = 8(返回的结果) a=a+1=4(函数内静态变量a变成了4)
所以 s = 2 + f(0) = 2 + 8 = 10

f(1)的运算过程:
1%2=1执行if分支,
在这个分支中定义了一个静态变量a(它的有效范围是在这个if范围内)此时a=4(定义并赋值),
t = t + a = 4, a = a + 1 = 5(注意,这个a是在if分支的范围内,出了这个范围,在f(1)方法内还存在一个静态变量,它目前的值是4)
执行return操作 t = t +a = 4+ 4 = 8(返回的结果) a=a+1=5(函数内静态变量a变成了5)
所以 s = s + f(1) = 10+ 8 = 18

f(2)的运算过程:
2%2 =0所以执行else分支,
在这个分支中存在一个静态变量a(它的有效范围是在这个else范围内)此时a=6, t=t+a=6, a=a+1=7(注意,这个a是在else分支的范围内,出了这个范围,在f(2)方法内还存在一个静态变量,它的当前值是5)
执行return操作 t = t +a = 6 + 5 = 11(返回的结果) a=a+1=6(函数内静态变量a变成了6)
所以 s = s+ f(2) = 18 + 11 = 29
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式