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

admin2010-01-10  9

问题 有以下程序:    void    fun(  int  *a,  int  i,  int  j)    {    int  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、654321
B、432156
C、456123
D、123456

答案1

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

随机试题
最新回复(0)