一个C语言的选择题

intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d... int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ", d);
return(d);
}
main( )
{int a=3; printf("%d \n", fun(a+fun(d)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
选c,可是为什么不是14呢
展开
 我来答
徐光猪
2011-01-08 · TA获得超过4167个赞
知道大有可为答主
回答量:1299
采纳率:50%
帮助的人:1717万
展开全部
首先 全局变量 d=1 送入 函数 fun(d) 定义在 函数fun中的静态变量d 加上1 就是 6

输出 6 接着返回一个6 再被函数fun(a+6); 调用 即 fun(9) 进入fun函数后 静态变量

因为是主函数结束才释放 所以 d就是 6 d+=p 则 d=15 输出 15 返回 15 再输出

所以 答案是 6 15 15
手机用户28085
2011-01-08 · TA获得超过275个赞
知道答主
回答量:201
采纳率:0%
帮助的人:141万
展开全部
static定义的变量值改变后不可恢复。即d=6,而不是5啦、、、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
doujiangwutang
2011-01-08 · TA获得超过969个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:118万
展开全部
static int d=5定义静态局部变量
其只在第一次调用fun函数时赋初值5,然后fun(1)时它的值改变为6,由于其在静态存储区存放,故在fun函数调用结束后,其值不消失,所以在再次调用fun函数时,d=6,所以结果就是15了,选C,希望能够帮到您。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lovelywizard
2011-01-08 · 超过18用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:0
展开全部
1。执行最里层的fun(d),即fun(1),打印出数字6,并且d此时值为6,返回6
2。执行外层的fun(a+6),即fun(9),注意,因为d为static类型,d此时值为6,故执行完后,打印15,d变为15,返回15。
3。执行printf函数,再次打印15。
所以选c了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式