#include #include #include void readString(char** stringPtrPtr, int stringCount) { char tempStringPtr[81] = {0}; int i = 0; for (i = 0; i < stringCount; i++) { scanf("%80s", tempStringPtr);//读入临时字符串 stringPtrPtr[i] = malloc(strlen(tempStringPtr) + 1);//创建一个和temp一样大的空间 strcpy(stringPtrPtr[i], tempStringPtr);//把temp 复制进新申请的地址里 } } void swap(char** a, char** b) { char* tmp = *a; *a = *b; *b = tmp; } int main() { int n = 0; int i = 0; char** stringPtrArrayPtr;//指向字符串指针数组的指针,字符串指针数组的大小要根据N的数量确定有几个指针 int moved = 1; scanf("%d", &n); stringPtrArrayPtr = (char**) malloc(sizeof(int* ) * n);//根据N的大小决定要多少个字符串指针 readString(stringPtrArrayPtr, n); while(moved) { moved = 0; for (i = 0; i < n - 1; i++) { if (strcmp(stringPtrArrayPtr[i], stringPtrArrayPtr[i+1]) > 0) { //若前面的比后面的大,就交换 moved = 1; swap(&stringPtrArrayPtr[i], &stringPtrArrayPtr[i+1]); } } } for (i = 0; i < n; i++) { printf("%s\n", stringPtrArrayPtr[i]); } return 0; }