二级C语言的问题 int f() { static int i=0; int s=1; s+=i; i++; return s; }
main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a)}...
main() { int i,a=0; for(i=0;i <5;i++) a+=f(); printf("%d\n",a) }
展开
6个回答
展开全部
我就不用专业术语来回答了(因为我不太懂)static int i=0 如果出现在函数的内部的话,i就是是变的(每次用都是i上一次的值),如果以 static int i=0 f(){ }这种形式出现的话就是不可变的(每次用都是0)。这道题中 static int i=0在函数内部,而函数最后有i++,所以i每次循环i都加1,而s每次都是1(前面没有 static)比如当i=2时s=1+2=3。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第1次:s=1 ;i=0;return 1;
第2次:s=2;i=2;return 2;
第3次:s=4 ;i=3;return 4;
第4次:s=7 ;i=4;return 7;
第5次:s=11 ;i=5;return 11;
a=1+2+4+7+11=25
楼上错,i为static
第2次:s=2;i=2;return 2;
第3次:s=4 ;i=3;return 4;
第4次:s=7 ;i=4;return 7;
第5次:s=11 ;i=5;return 11;
a=1+2+4+7+11=25
楼上错,i为static
追问
答案是15.你算错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数f中变量i为静态变量,函数f调用结束后变量i所占据的存储单元不会释放,而在主函数中f被调用5次,具体过程如下: 第1次调s=s+i=1+0=1,i=i+1=1,主函数中a=a+f()=0+1=1 第2次调用f:s=s+i=1+1=2,i=i+1=2,主函数中a=a+f()=1+2=3 第3次调用f:s=s+i=1+2=3,i=i+1=3,主函数中a=a+f()=3+3=6 第4次调用f:s=s+i=1+3=4,i=i+1=4,主函数中a=a+f()=6+4=10 第5次调用f:s=s+i=1+4=5,i=i+4=5,主函数中a=a+f()=10+5=15 所以printf语句的输出结果为15。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主函数5次调用函数f(),下面列出每次调用前后的变量s,i,a的值。
1次: s = 1,i = 1,a = 1
2次: s = 2,i = 2,a = 3
3次: s = 3,i = 3,a = 6
4次: s = 4,i = 4,a = 10
5次: s = 5,i = 5,a = 15
故最后的打印结果是: 15
1次: s = 1,i = 1,a = 1
2次: s = 2,i = 2,a = 3
3次: s = 3,i = 3,a = 6
4次: s = 4,i = 4,a = 10
5次: s = 5,i = 5,a = 15
故最后的打印结果是: 15
追问
3Q...真的是太感謝你了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询