以下程序的输出结果是______。 main() { int x;0; sub(&x,8,1); printf("%d\n",x); } sub(int *a,int n,int k)

admin2013-02-23  22

问题 以下程序的输出结果是______。
   main()
   {    int  x;0;
        sub(&x,8,1);
        printf("%d\n",x);
   }
   sub(int  *a,int  n,int  k)
   {  if(k<=n)  sub(a,n/2,2*k);
      *a+=k;
   }

选项

答案7

解析 在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4, 2),sub(&s,4,2)调用sub(&a,2,4),sub (&a,2,4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的。*a+=k;语句此时 x=x+k=0+4+4,回推到上一层调用函数sub(Rx,4, 2)中,执行后面的语句,x=x+k=4+2=6,在回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。
转载请注明原文地址:https://kaotiyun.com/show/ZhJp777K
0

最新回复(0)