标题:想了半天出不来,真心求教3Q
只看楼主
yi52302
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-16
结帖率:50%
已结贴  问题点数:20 回复次数:6 
想了半天出不来,真心求教3Q
最近准备考2级C遇到一个问题,向来半天想不出来,特来求教,万分感谢。
其中一段代码是这样的
int f2()
{
Static int k=1,s;
s=s+k;
k++;
return s;
}
for(i=1;i<=3;i++)
f2();
printf("%d\n",f2());
我觉得输出应该是7。过程是1+1=2
2+2=4
4+3=7
可答案是10,请教各位前辈,到底是什么情况,
帮个解答一下,万分感激了

[ 本帖最后由 yi52302 于 2010-11-16 20:05 编辑 ]
搜索更多相关主题的帖子: 真心 
2010-11-16 20:03
yi52302
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-16
得分:0 
没人帮助一下我吗?
2010-11-16 20:25
A553649769
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2010-11-16
得分:5 
对for(i=1;i<=4;i++)f2();的分析
当i=1时:执行f2();
k = 1;
s = 1;
k = 2;
当i=2时: 执行f2();
s = 1 + 2 =3;
k = 3;
当 i=3时: 执行f2();
s = 3 + 3 = 6;
k = 4;

然后执行printf("%d\n",f2());注意,在这里有执行了一次f2();
所以此时
s = 6 + 4 =10;
2010-11-16 20:25
A553649769
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2010-11-16
得分:5 
我帮你解答了,有什么奖励没有?
2010-11-16 20:26
HonryZZ
Rank: 2
等 级:论坛游民
帖 子:13
专家分:59
注 册:2010-11-12
得分:5 
执行了 4 次..
第一次 s = 1 k = 2
第二次 s = 3 k = 3
第三次 s = 6 k = 4
第四次 s = 10 k = 5
....
2010-11-16 20:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:5 
初始化的结果是 k=1, s=0
f2()在循环中被执行了3遍,在printf中被执行了一遍,共4遍
第一次执行后, s = 1, k = 2; 返回 1
第二次执行后, s = 3, k = 3; 返回 3
第三次执行后, s = 6, k = 4; 返回 6
第四次执行后, s = 10, k = 5; 返回 10

重剑无锋,大巧不工
2010-11-16 20:27
yi52302
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-16
得分:0 
谢谢各位的解答,谢谢
2010-11-16 22:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-325964-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.684537 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved