下列程序执行输出的结果是( )。 #include<stdio.h> f(int a) { int b=0; static c=3; a=C++;b++; return(a); } main()

admin2013-02-23  20

问题 下列程序执行输出的结果是(    )。
   #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

解析 本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
   在主函数中,第一次循环,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。
转载请注明原文地址:https://kaotiyun.com/show/ToJp777K
0

最新回复(0)