c语言的一道选择题

有以下程序:#include<stdio.h>intf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}i... 有以下程序:

#include <stdio.h>
int f(int n);
main()
{  int a=3,s;
  s=f(a);s=s+f(a); printf("%d\n",s);
}
int f(int n)
{  static int a=1;
  n+=a++;
  return n;
}
程序运行后的输出结果是(  )。
A) 9
B) 8
C) 7
D) 10

这个n没赋值怎么知道是多少啊?
展开
 我来答
GTP_12345
2013-03-26 · TA获得超过635个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:146万
展开全部
A
解析:第一次调用时,在f函数中,n=3,n+=a,n=4,a=2;返回4,所以主函数中s=4;
第二次调用时,在f函数中,n=3,n+=a,n=3+2=5,a=3;返回5,所以主函数中s=4+5=9;
难点:主函数中a和f函数中a不一样,都是局部变量,两者之间没有关系;
在f函数中,a是静态局部变量,它的值在第二次调用f函数时为2,而不是1.
中国物联网校企联盟技术部
yooyocn
2013-03-26 · TA获得超过326个赞
知道答主
回答量:115
采纳率:100%
帮助的人:72万
展开全部
A
s=f(a);时调用f(3),n=n+a 就是n=3+1 然后a在自加1变为2,由于a是静态变量,下次调用时不会被初始化,保留上次的值2. 函数返回n的值是4赋给s
s=s+f(a); 时调用f(3),n=n+a 即n=3+2 返回5
s=4+5
s=9

谢谢给予采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光霖
2013-03-26 · TA获得超过515个赞
知道小有建树答主
回答量:100
采纳率:100%
帮助的人:129万
展开全部
注意n是函数的形参,是由主函数的实参调值进入的。所以s=f(3),代入下面的函数,n=3。然后依次累加即可。注意static 是静态变量,会储存之前保存的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依米花堵8d
2013-03-26 · 超过23用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:47.5万
展开全部
应该是A)9吧如果对了我解释下 如果错了就算了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1599155266
2013-03-26 · 超过12用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:28.5万
展开全部
应该是A吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式