C语言两道选择题求详细解释!

static语句是否可以决定a的值?第一次f(a)return得到的是5对吧,第二次a的值应该不变还是为5啊??上题求详细过程!!... static语句是否可以决定a的值?第一次f(a) return得到的是5对吧,第二次a的值应该不变还是为5 啊??

上题求详细过程!!
展开
 我来答
爽快还实诚灬布丁c
2014-09-18 · TA获得超过882个赞
知道小有建树答主
回答量:601
采纳率:0%
帮助的人:171万
展开全部
31)注意,函数int f(int n)中的a与main函数里面的a是两个变量。
函数里的static int a=1这个赋值操作不会执行,只是在程序执行时会对这个a进行初始化,这个就是static的神奇之处;
从main开始看,首先,a=3;s=f(a)=f(3)=3+1=4;(n+=a++;可以分解成n=n+a;a++;这时函数f()内的a=2);下面一句s=s+f(a)=4+f(3)=4+(3+2)=9;所以答案是c;

16)a=1;b=2;c=<CR>(其实相当于字符'\n');d=3;
所以显示
12(这里是回车字符)
3
joychen_
2014-09-18 · TA获得超过1747个赞
知道大有可为答主
回答量:1617
采纳率:100%
帮助的人:1835万
展开全部
  1. static变量可以理解为全局变量,赋初值1只执行一次。  n += a++  先取值,后加1。所以第一次 f(3)返回4,第二次 f(3)返回5, 4+5=9

  2. 没有使用 fflush(stdin),所以第一个getchar取到了 scanf 时最后输入的回车键。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
silmerusse
2014-09-18 · TA获得超过6640个赞
知道大有可为答主
回答量:2919
采纳率:33%
帮助的人:2103万
展开全部
第一个问题,你可能要去学习下静态变量的概念。一般临时变量存储在栈上,进入函数时栈会建立,返回时摧毁。所以临时变量每次都会重新初始化。而静态变量存储在程序的数据段,进入函数不会重新初始化,返回时也不会摧毁。所以,上次的赋值会影响下次的读取。

第二个问题,scanf读入两个字符1和2。getchar读入接下去两个字符<CR>和3。所以输出是12<CR>3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式