有以下程序: #include<stdio.h> int fun(int a) {int b=2; static int c=2; b++:c--;return(a+b+c); } main() {int k,a=2; for(k=0;k<3;k++)pr

admin2020-06-16  22

问题 有以下程序:
#include<stdio.h>
int fun(int a)
{int b=2;
static int c=2;
b++:c--;return(a+b+c);
}
main()
{int k,a=2;
for(k=0;k<3;k++)printf("%d",fun(a));
printf("\n");
}
执行后的输出结果是(  )。

选项 A、678
B、666
C、654
D、456

答案C

解析 由于main函数for循环中k的取值为0,1,2,所以for循环三次调用fun()函数,每次调用函数fun,形参a的值为2(实参a传入),局部变量b始化为2(fun函数中初始化),静态局部变量c,保留上一次函数调用结束后的值,所以第一次调用fun(),形参a=2,b=2,c=2,然后执行b自增1,c字减1,返回值为:2+3+1=6;第二次调用fun(),形参a=2,b=2,c=1,然后执行b自增1,c自减1,返回值为:2+3+0=5;第三次调用fun(),形参a=2,b=2,c=0,然后执行b自增1,c自减1,返回值为:2+3-1=4,所以结果为:654,答案为C。
转载请注明原文地址:https://kaotiyun.com/show/adCp777K
0

最新回复(0)