有以下程序: #include int fun(int a) { int b=2; static int c=2: b++:c一一;return(a+b+e); } main() { in

admin2021-07-09  44

问题 有以下程序:
    #include
    int fun(int a)
    {  int b=2;
    static int c=2:
    b++:c一一;return(a+b+e);
    }
    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/Hptp777K
0

最新回复(0)