C语言第十三题,求过程,拜托了各位!
展开全部
从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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询