#include « stdafx.h » #include « stdio.h » void out_student(char (*p)[20],int n) ; char (*p)[20]Pointeur de données (pointeur ligne) void sort_student(char (*p)[20],int n) ; int main() {char étudiants[3][20] ; int i ; pour(i=0 ; i<3 ; i++) scanf(« %s »,*(étudiants+i)) ; Inscrit out_student (élèves,3) ; sort_student (élèves,3) ; out_student (élèves,3) ; retour 0 ;
} Void out_student(char (*p)[20],int n) //(*p) adresse de ligne {int i ; pour(i=0 ; i<n ; i++) printf(« %s »,*(p+i)) ; printf(« \n ») ;
}
//选择排序 void sort_student(char (*p)[20],int n) {int i,j ; pour(i=0 ; i<n-1 ; i++) {int pos=i ; pour (j=i+1 ; J<n ; j++) {if(strcmp(*(p+j),*(p+pos)<0)) //strcmp(*(p+j),*(p+pos)<0) *(p+j) ne peut pas être une adresse de ligne, il doit s’agir d’une adresse de colonne, la première adresse d’un tableau du premier ordre {pos=j ; }
}
} if(pos !=i) {char str[20]={'\0'} ; strcpy(str,*(p+pos)) ; *(p+pos) L’adresse de la première colonne de la ligne pos, la chaîne d’échange strcpy(*(p+pos),*(p+i)) ; strcpy(*(p+i),str) ;
}
}
//总结:
/*二维数组表示(行地址,列地址) Le pointeur parcourt le tableau Tableau de caractères 2D (adresse de ligne, adresse de colonne) */
|