一道编程题目:用指向指针的指针的方法对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;
}
}
评论