正文

用指向指针的指针的方法对n个整数排序并输出2006-04-14 15:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/clever101/12393.html

分享到:

一道编程题目:用指向指针的指针的方法对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",&times);
   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;
}

}

 

阅读(7240) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册