设有以下函数: #include <stdio.h> int f(int a) { int b=0

设有以下函数:
#include <stdio.h>
int f(int a)
{ int b=0;
static c=3;
b++ ; c++;
return (a+b+c); }
如果在下面的程序中调用该函数,则输出结果是___A_.
void main()
{ int a=2,i;
for(i=0;i<3;i++) printf("%d\n",f(a)); }
A) 7 B) 7 C) 7 D) 7
8 9 10 7
9 11 13 7

完全不知道要怎么做(,,•́ . •̀,,)

首先,在main中,a的值一直是2, 没有改变过
所以对于f,每次的参数a都是2.

其次,在f中,b是局部变量,每次进入f重新初始化,于是,每次执行f时,b都是初始为0,自加为1,再参与加法运算返回。

最后,f中的c是静态局部变量,初始为3,之后每次进入f 是上次退出f时c的值。
于是 第一次加法时,c为4 第二次为5 第三次为6
所以 打印就是
7
8
9
选A

重点是 区分b和c 一个是进入后重新初始化 一个是保存上次的值。追问

!!!!!太详细了 三克油

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-29
选择b不错。
这个就是在for循环中调用f三次,考察每次输出的结果追问

我要方法…步骤 不要答案

本回答被网友采纳
相似回答