有下列程序 #include<stdio.h> int fun(int b) { statie int a=0: int t; t=a+b; a=b; return t; }

admin2019-01-11  24

问题 有下列程序
    #include<stdio.h>
    int fun(int b)
    {
    statie int a=0:
    int t;
    t=a+b;
    a=b;
    return t;
    }
    void main()
    {
    int i;
    for(i=1;i<24;)
    printf(’’%d’’,i=fun(i));
    }
    程序执行后的输出结果是(    )。

选项 A、1 2 3 5 8 13 21 34
B、1 1 3 5 8 13 21 34
C、2 4 7 12 20 33
D、0 2 4 7 12 20 33

答案A

解析 函数中,用static声明的变量,为静态局部变量,静态局部变量在内存的静态存储区中占据着永久性存储单元,退出函数时,变量不会消失,下一次调用时,值仍然存在。执行循环,i=1,调用函数fun(),a=b=1,因为a为静态局部变量,所以在函数调用结束后,它并不释放,仍保留a的值为1,返回值为1,输出1,i=1,再次执行循环,调用函数,此时a的值为上一次调用保存的值1,所以返回值为2,此时a的值仍为1,输出2,i=2,再次执行循环,调用函数,返回值为3,a=b=2,依次执行直到循环结束,最后输出结果为1 2 3 5 8 13 2134,选项A正确;本题答案为A。
转载请注明原文地址:https://jikaoti.com/ti/uMa0FFFM
0

相关试题推荐
最新回复(0)