C++题目,请带上解释!!谢谢

14、以下程序的输出结果是_________.#include<stdio.h>main(){inta=2,i;for(i=0;i<3;i++)printf("%d",f... 14、以下程序的输出结果是_________.
#include <stdio.h>
main()
{int a=2,i;
for(i=0;i<3;i++)
printf("%d",func(a));
}
func(int a)
{int b=0;
static c=3;
b++;c++;
return(a+b+c);
}

A、777
B、7 7 7
C、789
D、7 8 9
展开
 我来答
a399495
2011-06-24 · TA获得超过243个赞
知道答主
回答量:48
采纳率:100%
帮助的人:70.7万
展开全部
C
i=0时a=2, b=0,c=3, b++,c++后b=1,c=4。所以 func(a)=7
i=0时a=2, b=0,c=4, b++,c++后b=1,c=5。所以 func(a)=8
i=0时a=2, b=0,c=5, b++,c++后b=1,c=5。所以 func(a)=8
b是不变的,因为它时局部变量。
c是改变的,因为它是静态的(因为加了static)。也就是说该函数只有一个c变量,任意改变c的举动都会被保留在c里面。而b是用完就扔掉的。
789之间没有空格是因为printf语句就那一句,且没输出空格,所以就没空格了。
帐号已注销
2011-06-24 · TA获得超过439个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:301万
展开全部
很明显是C嘛, static可以不释放内存保证c被保留 ,b因为是auto类型,调用一次函数,用后内存被释放,值也就没有了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-06-24
展开全部
C、789

1 本题考的是静态变量知识点。static int c=3;//c前面最好加int。
2 静态变量中的值不会释放,下一次调用时,引用的是上一次调用结束时的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钟升哥
2011-06-24 · TA获得超过501个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:166万
展开全部
我 选 c
理由是:
for(i=0;i<3;i++)
printf("%d",func(a));这是一个三次的for循环,
第一次,主函数跳转到func(a)里 返回值return(a+b+c);{此时的a=2,b=1,c=4}所以输出7
第二次,主函数跳转到func(a)里 返回值return(a+b+c);但由于c是static静态变量,c++
将是由第一次的4自加为5,a,b值不变 所以输出a+b+c=2+1+5=8
第三次,主函数跳转到func(a)里时, 返回值return(a+b+c);但由于c是static静态变量,c++
将是由第二次的5自加为6,b是普通形参还是由0自加为1,a不变为2, 所以输出a+b+c=2+1+6=9,
printf("%d",func(a));由于没空格输出是789
采纳吧.........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kosl90
2011-06-24 · TA获得超过440个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:229万
展开全部
C
做三次循环,每次都调用函数func,并且输出函数func所返回的值
首先,这个输出语句中并没有任何的空格或换行符,因此三个输出的内容是相互连接的
其次,在调用func这个函数的时候,变量c只在第一次调用的时候初始化为3,之后一直会保持自身的值,知道程序结束;而变量b则会在每次调用函数func时都初始化为0。
所以三次输出的值分别为
2+1+3=7
2+1+4=8
2+1+5=9
所以答案是789
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式