文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C程序习题-使用指针的指针对整数进行排序[10.21]

C程序习题-使用指针的指针对整数进行排序[10.21]

时间:2010-08-25  来源:chengxiaopeng

    用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。5个整数和n在主函数中输入。最后在主函数中输出。     我们因为要使用指向指针的指针。因此我们需要定义保存数据用的数组,还需要定义数组指针和一个指向指针的指针。排序我们采用选择排序法。代码如下:  

#include <stdio.h>
#define N 300

void print_source(int [],int);
void print(int **,int);
void sort(int **,int);
int main(int argc, char *argv[])
{
    int data[N],*pstr[N],**p,i,n;
    printf("please input n:");
    scanf("%d",&n);
    
    for (i = 0; i < n; i++)
    {
        pstr[i] = &data[i];
    }
    p = pstr;
    
    for (i = 0; i < n; i++)
    {
        scanf("%d",*p++);
    }
    p = pstr;
    
    printf("the source data is :\n");
    print(p,n);
    
    printf("the sort result:\n");
    p = pstr;
    sort(p,n);
    p = pstr;
    print(p,n);
    printf("array source data is :\n");
    print_source(data,n);
    system("pause");
    return 0;
}

void print(int **p, int n)
{
     int i;
     for (i = 0; i < n; i++)
     {
         printf("%d ",**p++);
     }
     printf("\n");
}

void sort(int **p, int n)
{
     int i,j,k,*temp;
     for (i = 0; i < n - 1; i++)
     {
         k = i;
         for (j = i + 1; j < n; j++)
         {
             if (**(p + k) > **(p + j))
             {
                k = j;
             }
         }
         if (k != i)
         {
            temp = *(p + i);
            *(p + i) = *(p + k);
            *(p + k) = temp;
         }
     }
}

void print_source(int arr[],int n)
{
     int i;
     for (i = 0; i < n; i++)
     {
         printf("%d ",arr[i]);
     }
     printf("\n");
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载