A-A+
有以下程序:#include <stdio h>void fun(iht * a int
问题详情
有以下程序:#include <stdio, h>void fun(iht * a,int i,int j){ int t; if(i < j) { t=a[i];a[i] =a[j] ;a[j]=t; i++;j--; fun(a,i,j);main () int x[ ]: {2,6,1,8} ,i; fun(x,0,3); for(i=0;i <4;i ++ ) printf("%2d" ,x[i] ); printf(" n");
A.1268
B.8621
C.8162
D.8612请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:C
解析:语句fun(x,0、3);中将数组名x作为实参,即把数组x的首地址传送给形参(指针a),使数组x与形参指针s共占同一段内存单元,在调用函数期间,如果形参数组x的值发生了改变,实参指针a的值也就改变了。程序中fun函数是递归调用函数,其运行过程是:第1次调用fun时,a=x,i=0,j=3,i<j成立,a[0]与a[3]交换,a数组中的数变为{8,6,1,2},执行i++;j--;继续调用fun,此时i,j分别为1,2,i<j成立,a[1]与a[2]交换,a数组中的数变为{8,1,6,2},执行i++j--;继续调用fun,此时i,j分别为2,1,i<j不成立,递归调用结束。当返回主函数时,x数组中的数据就为{8,1,6,2}。