#include void fun(int a[], int n, int flag) { int t, i, j, k; for (i = 0; i < n - 1; i++) { k = i; for (j = i + 1; j < n; j++) { if (flag ? a[k] > a[j]: a[k] < a[j]) { k = j; } if (k != i) { t = a[k]; a[k] = a[i]; a[i] = t; // Swap a[k] and a[i] } } } } int main() { int c[10] = {8, 6, 7, 10, 9, 3, 5, 2, 4, 1}, i; fun(c, 5, 0); //fun(c + 5, 5, 1); for (i = 0; i < 10; i++) { printf("%d, ", c[i]); } //9, 10, 8, 7, 6, 1, 2, 3, 4, 5, //一个莫名其妙的排序,它不一定能给出正确的顺序。 //老师出这个题的意义可能只是想强调c是一个指针,加5就代表着c[5]的地址? return 0; }