#include «stdafx.h» #include «stdio.h» void out_student(char (*p)[20],int n); char (*p)[20]Указатель данных (указатель строки) void sort_student(Char (*p)[20],int n); Int main() {char students[3][20]; int i; for(i=0; i<3; i++) scanf("%s",*(students+i)); Участвовал out_student(студенты,3); sort_student(студенты,3); out_student(студенты,3); возврат 0;
} void out_student(char (*p)[20],int n) //(*p) адрес строки {int i; for(i=0; I<N; i++) printf("%s",*(p+i)); printf("\n");
}
//选择排序 void sort_student(Char (*p)[20],int n) {int i,j; for(i=0; i<N-1; i++) {int pos=i; for(j=i+1; J<N; j++) {if(strcmp(*(p+j),*(p+pos)<0)) //strcmp(*(p+j),*(p+pos)<0) *(p+j) не может быть адресом строки, это должен быть адрес столбца, первый адрес массива первого порядка {pos=j; }
}
} if(pos!=i) {char str[20]={'\0'}; strcpy(str,*(p+pos)); *(p+pos) Адрес первого столбца строки pos, строки swap strcpy(*(p+pos),*(p+i)); strcpy(*(p+i),str);
}
}
//总结:
/*二维数组表示(行地址,列地址) Указатель проходит по массиву 2D массив символов (адрес строки, адрес столбца) */
|