有以下程序 #include <stdio.h> int a=2; int f() { static int n; int m; m=n=0; n++; a++; m++; return n+m+a; } main

admin2021-02-25  17

问题 有以下程序
#include <stdio.h>
int  a=2;
int  f()
{  static int  n;
   int  m;
   m=n=0;
   n++;  a++;  m++;
   return  n+m+a;
}
main()
{  int  k;
   for (k=0; k<3; k++)
       printf("%d,", f( ));
   printf("\n");
}
程序的运行结果是

选项 A、5,6,7,
B、5,7,9,
C、5,8,11,
D、5,5,5,

答案A

解析 static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:k=0,a=2,n=0,m=0;n=1,a=3,m=1,返回5;k=1,a=3,n=0, m=0;n=1,a=4,m=1,返回6;k=2,a=4,n=0,m=0;n=1,a=5,m=1,返回7;k=3退出循环。A选项正确。
转载请注明原文地址:https://jikaoti.com/ti/dXz0FFFM
0

最新回复(0)