下面程序的运行结果是_______。 main( ) { int x=0: sub(&x,8,1); printf(“%d\n”,x); } sub(int*a,int n,int k) { if(k

admin2014-10-20  21

问题 下面程序的运行结果是_______。
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

解析 函数调用sub(&x,8,1),将变量x的地址传给指针变量a,数值8传给n,数值1传给k,在函数体的执行中,条件k<=n成立,再次调用sub(a,4,2)函数,执行函数体,条件k<=n成立,第三次调用sub(a,2,4)函数,数值2传给n,数值4传给k,执行循环体,条件不成立,执行语句*a+=k,指针a所指单元内的值为4,返回上一级调用,执行语句*a+=k指针a所指单元内的值为6,再一次返回到第一次函数调用,执行语句*a=k;,指针a所指单元内的值为7,则变量x的值为。
转载请注明原文地址:https://kaotiyun.com/show/lwvR777K
0

最新回复(0)