有以下程序: void sort(int a[], int n) {int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j])

admin2009-01-15  19

问题 有以下程序:    void sort(int a[], int n)    {int i,j,t;      for(i=0;i<n-1;i++)         for(j=i+1;j<n;j++)            if(a<a[j])            {               t=a;               a=a[j];               a[j]=t;            }    }    main()    { int aa[10]={1,2,3,4,5,6,7,8,9,10},i;       sort(aa+2,5);       for(i=0;i<10;i++)printf("%d,",aa);       printf("\n");    }    程序运行后的输出结果是(    )。

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

答案4

解析 先看sort()函数,它没有返回值,有两个参数,一个int型数组和一个int型变量。在函数中是一个二重循环,外循环变量i从0递增到n-2,内循环变量j从i+1递增到n-1。内循环体是一条if语句“如果a<a[j]就把两个值交换”。这是一个典型的从大到小选择排序算法,排序的范围是a[0]~a[n-1],一共n个数排序,主函数中定义了一个数组aa[10],然后调用sort(aa+2,5);的意思是将 aa[2]~aa[6]范围的5个数据从大到小排序。所以排序以后数组aa[10]的内容是1,2,7,6,5,4,3,8,9,10。故应该选择C。
转载请注明原文地址:https://kaotiyun.com/show/DFXp777K
0

最新回复(0)