有以下程序 #include <stdio.h> void fun( int a[ ], int n, int flag ) { int i=0,j, t; for ( i=0; i<n-1; i++ ) for ( j=i

admin2020-07-28  13

问题 有以下程序
#include  <stdio.h>
void  fun( int  a[ ], int  n, int  flag )
{  int  i=0,j, t;
   for ( i=0; i<n-1; i++ )
      for ( j=i+1; j<n; j++ )
        if ( flag )
        {   if ( a < a[j] )
            {  t = a;  a = a[j];  a[j] = t;  }
        }
       else
       {   if ( a > a[j] )
           {  t = a;  a = a[j];  a[j] = t;  }
       }
}
main( )
{  int  c[10]={ 7,9,10,8,3,5,1,6,2,4 },i;
   fun( c, 4, 1 );
   fun( c+4, 6, 0 );
   for ( i=0;i<10; i++ )    printf( "%d,", c );
   printf("\n");
}
程序运行后的输出结果是

选项 A、7,8,9,10,6,5,4,3,2,1,
B、10,9,8,7,6,5,4,3,2,1,
C、10,9,8,7,1,2,3,4,5,6,
D、1,2,3,4,5,6,7,8,9,10,

答案C

解析 fun()函数作用冒泡法排序,flag控制升序(0)或者降序(1)。n为参与排序的个数。a为数组的起始地址。因此,fun(a,4,1),数组的前四个降序排序,fun(a+4,6,0)从数组的第四项,后六个升序排序。故结果为10,9,8,7,1,2,3,4,5,6。答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/2X3p777K
0

最新回复(0)