Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2509910
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-08-25 09:48:38

    用指向指针的指针的方法对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");
}


阅读(2365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~