Files
BasicsOfComputerSoftwareEng…/POP/12/Exercise01.c
2023-02-21 10:56:54 +08:00

47 lines
1.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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;
}