一道编程题目:用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。整数和n在主函数中输入,最后在主函数中输出。我对该题的理解是:用交换地址的办法来达到交换元素的目的。 #include <stdio.h> #include <malloc.h> void Sort(int **p, int times) { int *temp; int i=0; int j=0; for (i=0; i<times-1; i++) { for (j=i+1; j<times; j++) { /*当某元素大于它后面的元素,交换它们的地址*/ if (**(p+i) > **(p+j)) { temp = *(p+i); *(p+i) = *(p+j); *(p+j) = temp; } } } } int main(void) { int i=0; int times=0; int **p = (int**)malloc(20*sizeof(int*));//开辟20个int*空间 printf("input times to opt:\n"); scanf("%d",×); for (i=0; i<20; i++) { *(p+i)=(int*)malloc(sizeof(int)); //为每个int*指向一个int数据 } for (i=0 ; i<times; i++) { printf("Please input a figure:\n"); scanf("%d", *(p+i)); } printf("\nthe result is :\n"); Sort(p, times); for (i=0; i<times; i++) { printf("%d ",**(p+i)); } for (i=0; i<20; i++) { free(*(p+i)); *(p+i) = NULL; } free(p); p = NULL;printf("\n");return 0;} }

评论