有以下程序 #include <stdio.h> int fun(int n) { static int t=1; int i=1; for( ; i<=n; i++) t*=i;

admin2015-11-24  5

问题 有以下程序
      #include <stdio.h>
      int fun(int n)
      {  static int t=1;   int i=1;
         for( ; i<=n; i++)  t*=i;
         return t;
      }
      main()
      {  int t=1,i;
         for(i=2;i<4; i++)
            t+=fun(i);
         printf("%d\n",t);
      }
程序的运行结果是

选项 A、8
B、11
C、15
D、4

答案C

解析 static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:执行for循环,i=2,t=1,调用函数fun(2),定义静态存储类别的局部变量t =1,此变量的作用域为函数fun中,定义局部变量i=1,for循环实现t=1*1*2=2,返回2,主函数中t=1+2=3;i=3,t=3,调用函数fun(3),静态存储类别的局部变量上次调用后结果t=2,局部变量i=1,for循环实现t=2*1*2*3=12,返回12,t=3+12=15。最后输出t为15,C选项正确。
转载请注明原文地址:https://kaotiyun.com/show/YkID777K
0

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