int a=4; int f(int n) main() {int t=0;static int a=5; {int s=a,i=0; if(n%2){int a=6;t+=a++;} for(;i<2;i++)

admin2019-12-17  14

问题 int a=4;
int f(int n)                  main()
{int t=0;static int a=5;    {int s=a,i=0;
if(n%2){int a=6;t+=a++;}   for(;i<2;i++)s+=f(i);
else{int a=7;t+=a++;}       printf(’’%d\n’’,s);
retum t+a++;}                 }

选项 A、28
B、30
C、32
D、34

答案A

解析 本题考查变量作用域。程序中首先定义了全局整型变量a=4。在int f(int n)函数中定义了局部静态整型变量并进行了初始化即static int a=5,在int f(int n)函数中对n是否是偶数进行判断,如果n是奇数,则函数的返回值为11,局部静态整型变量a=6;如果n是偶数,则函数的返回值为12,局部静态整型变量a=6。所以在main()函数中循环首先执行s+=f(0)语句,而f(0)返回值12,所以第一次循环结束s的值等于4+12=16;第二次开始执行f(1)时,在f(1)中执行“if(n%2){int a=6;t+=a++;}”和“return t+a++;”这两条语句。这时t=6,a=6(静态局部变量第一次循环后其值加1不释放,执行二次循环量,其值仍有效),所以f(1)的返回值等于12。再在主函数中执行s+=f(1)语句,即16+12=28。
转载请注明原文地址:https://www.kaotiyun.com/show/WzCp777K
0

最新回复(0)