有以下程序 void fun(int *a,int i,int j) { in t; if(i<j) {t=a[i];a[i]=a[j];a[j]=t; fun(a,++i,--j); }

admin2013-02-23  25

问题 有以下程序    void fun(int *a,int i,int j)    {  in t;       if(i<j)       {t=a;a=a[j];a[j]=t;         fun(a,++i,--j);       }    }    main()    {  int a[]={1,2,3,4,5,6},i;       fun(a,0,5);       for(i=0;i<6;i++)         printf("%d",a);    }    执行后输出结果是

选项 A、6 5 4 3 2 1
B、4 3 2 1 5 6
C、4 5 6 1 2 3
D、1 2 3 4 5 6

答案1

解析 函数fun()中有3个参数,参数。为一个指针变量,接收的实参可以是数组名,参数i和j分别表示数组元素的下标,当下标i小于下标j时,a和a[j]交换,然后对自身进行调用,可见这是一个递归函数。其实现的功能是把数组a,从下标为i的元素到下标为j的元素之间的所有元素反序存放。在主函数中调用fun()函数,把a数组从a[0]到a[5]之间的所有元素反序存放,最后输出从a[1]到a[5]的值,因此输出的值为6、5、4、3、2、1。
转载请注明原文地址:https://kaotiyun.com/show/9QJp777K
0

最新回复(0)