若有以下程序: #include <iostream> using namespace std; int f() { static int i = 0; int s = 1; s+=i; i+

admin2010-06-06  35

问题 若有以下程序:    #include <iostream>    using namespace std;    int f()    {      static int i = 0;      int s = 1;      s+=i;      i++;      return s;    }    int main()    {      int i,a = 0;      for(i = 0;i<5;i++)        a+=f();      cout<<a<<endl;      return 0;    }    程序运行后,输出的结果是

选项 A、20
B、24
C、25
D、15

答案D

解析 本题考核静态局部变量在函数中的使用。静态局部变量就是将局部变量说明为静态的。静态局部变量既有在局部域作用的特性(即变量只能在变量的作用范围内被访问),又可以永久存在(变量的值得以保留,并可继续使用)。静态局部变量只在第一次执行时初始化一次。在函数f中定义了一个静态局部变量i,它的初始值为0,还定义了一个局部变量s(它的初始值为1),用来返回计算所得值。函数f中所进行的数据加工是s+=i和i++。即每调用一次函数f,返回(i+1)的值后,i的值增1。再看主函数,在主函数main中,通过一个for语句连续调用f函数5次,并把每次调用f函数的返回值相加并存入a。最后输出a的值。在了解各函数功能以及调用关系后就可计算出a的值为15。
转载请注明原文地址:https://jikaoti.com/ti/hUW0FFFM
0

最新回复(0)