★C语言练习题,读程序写结果题,第二题

intfun(intn){staticinta=3;intt=0;if(n%2){staticinta=5;t+=a++;}else{staticinta=5;t+=a+... int fun(int n)
{ static int a=3;
int t=0;
if(n%2)
{ static int a=5;
t+=a++;}
else
{ static int a=5;
t+=a++;}
return t+=a++;}
main()
{ int i,s=0;
for(i=0;i<3;i++)
s+=fun(i);
printf("s=%d\n",s);}
正确答案:27
怎么样能算出???
展开
 我来答
陈学阳
2010-09-14 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5535万
展开全部
第一题
while 循环体语句由

a--;和printf("%d",a);构成

第一次循环 a=10 a>7 a=a-1=9 打印结果9
第二次循环 a=9 a>7 a=a-1=8 打印结果8
第三次循环 a=8 a>7 a=a-1=7 打印结果7
第四次循环 a=7 a=7 循环结束

最后结果就是987

第二题

a-- 是在while的循环体语句,而printf("%d",a);不是 那么

第一次循环 a=10 a>7 a=a-1=9
第二次循环 a=9 a>7 a=a-1=8
第三次循环 a=8 a>7 a=a-1=7
第四次循环 a=7 a=7

打印结果7

所以这两个题目主要区别是 循环体内的语句个数不同导致打印结果不同

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
猪头或火宝宝
2010-09-12 · TA获得超过2758个赞
知道小有建树答主
回答量:1001
采纳率:0%
帮助的人:1522万
展开全部
你好!!!
这里考到:局部变量隐藏全局变量.还有静态数据类型;
只要掌握者2点知识就可以了。
我运行的答案是28。
http://zhidao.baidu.com/question/181483892.html
这是我前几天回答的,和你的题目就是一样的!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljc_zy
2010-09-12 · 超过19用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:58.1万
展开全部
正确答案是28.
根据静态变量和同名变量的就近原则。
当第一次调用的时候 fun(0),返回8 ,8=5+3
fun(1) 返回9,最外部a为静态变量 9=5+4
fun(2) 返回11, 11= 6+ 5 ,最外部a为静态变量在相加的时候为5,另外
else
{ static int a=5;
t+=a++;}
这个a也是静态变量,在n=0时的自增操作已经为6。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式