int a=2;
int f(int n)
{ static int a=3;
int t=0;
if(n%2){ static int a=4; t+ =a+ +;}
else{ static int a=5; t+ =a+ +;}
returnt+a+ +;
}
main( )
{ int s=a,i;
for(i=0;i<3;i+ +) s+ =f(i);
printf("%d\n",s);
}
程序运行后的输出结果是( )。
A)26 B)28 C)29 D)24
int a=2;
int f(int n)
{ static int a=3;
int t=0;
if(n%2){ static int a=4; t+ =a+ +;}
else{ static int a=5; t+ =a+ +;}
returnt+a+ +;
}
main( )
{ int s=a,i;
for(i=0;i<3;i+ +) s+ =f(i);
printf("%d\n",s);
}
程序运行后的输出结果是( )。
A)26 B)28 C)29 D)24
选C
我帮你把变量名改一下,意思是一样的.
int a=2;
int f(int n)
{ static int b=3;
int t=0;
if(n%2){ static int c=4; t+ =c++;}
else{ static int d=5; t+ =d++;}
returnt+b++;
}
main( )
{ int s=a,i;
for(i=0;i<3;i+ +) s+ =f(i);
printf("%d\n",s);
}
s+=f(i),即s=s+f(i)=a+f(i)=2+f(i)
当i=0时,s=2+f(0)
0%2=0,所以执行else{ static int d=5; t+ =d++;}
t=t+(d++)=0+5=5,然后d=d+1=6,由于是static类型,所以下次进来这里的时候d=6
returnt+b++;即5+3=8,然后b=b+1=4,由于b是static类型,所以下次的b=4
所以f(0)=8,所以s=2+8=10
当i=1时s=s+f(1)=10+f(1)
1%2=1,所以执行{ static int c=4; t+ =c++;}
t=t+(c++)=0+4=4,然后c=c+1=5,由于是static类型,所以下次进来这里的时候c=5
returnt+b++;即4+4=8,b=b+1=5,下次的b=5
所以f(1)=8,所以s=10+f(1)=18
当i=2;
2%2=0,所以执行else{ static int d=5; t+ =d++;}
t=t+(d++)=0+6=6,然后d=d+1=7由于是static类型,所以下次进来这里的时候d=7
returnt+b++;即6+5=11,然后b=b+1=6,由于b是static类型,所以下次的b=6
所以f(2)=10,所以s=18+11=29
C!