问题
单项选择题
下列程序执行输出的结果是( )。 #include<stdio.h> f(int a) { int b=0;static c=3;a=c++;b++;return(a); } main() { int a=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k); }
A.3
B.4
C.5
D.6
答案
参考答案:B
解析:
在主函数中,第一次循环,i=0,调用k=f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。