有以下程序: #include double fun(int 13) { static double f=1; f*=n: retum f; } main() { int i; d

admin2021-06-15  32

问题 有以下程序:
    #include
    double fun(int 13)
    {  static double f=1;
    f*=n:
    retum f;
    }
    main()
    {  int i;
    double s=0;
    for(i=1;i<6;i++)
    s+=fun(i);
    prinff(“%lf\n”,s);
    }
    程序计算的是(    )。

选项 A、s=1 1+2 1+3 1+4 1+5 1
B、s=1+2+3+4+5
C、s=1*2*3*4*5
D、s=1 !*2 !*3 !*4 !*5!

答案A

解析 函数fun()中的变量f是静态变量,所以只初始化一次,之后每次调用fun(),f的初值就是上一次fun()结束时的值,对于fun()函数,当传入n=1时,f=1,返回值为1;当传入n=2时,f=1×2=2,返回值为2;当传入n=3时,f=2×3=6,返回值为6;当传入n=4时,f=6×4=24,返同值为24,所以每次调用fun函数时,f变量在上一次fun函数运行结束时保留值的基础上,再与n乘积,并重新赋值给f,所以可以将f理解为记录当前的累乘值,即当main函数中i=1时,f=1!=1;当main()函数i=2时,f=2!=2,当main函数中i=3时,f=3!=6……另外main函数中的s记录调用fun函数的返回值之和,所以s=1 !+2 !+…+i!,由于i最大值为5,所以s=1!+2!+3!+4!+5 !,答案为A。
转载请注明原文地址:https://kaotiyun.com/show/Yrtp777K
0

最新回复(0)