问题 单项选择题

有以下程序:
fun(int x,int y)
static int m=0, i=2;
i+=m+1; m=i+x+y; return m;

main()
int j=1,m=1,k;
k=fun(j,m); printf("%d,"k);
k=fun(j,m); printf("%d\n",k);

执行后的输出结果是( )。

A.5,5

B.5,11

C.11,11

D.11,5

答案

参考答案:B

解析: 本题的fun()函数中定义的变量m和i是静态局部变量,第1次调用fun()函数时m=0、 i=2,执行i+=m+1后,i的值变为3,再执行m=i+x+y后,m的值变为5,所以第1次输出的整数是5。第2次调用fun()函数时m=5、i=3,执行i+=m+1,i变为9,再执行m=i+x+y,m变为11,所以第2次输出的整数是11。故本题应该选择B。

选择题
单项选择题 A1/A2型题