问题 问答题

有以下程序:
#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");

答案

参考答案: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

单项选择题 案例分析题
单项选择题