我的未来不是梦
libra0925
全部博文(52)
基金(1)
感(2)
悟(0)
心得(2)
vim是一种信仰(1)
c(43)
2011年(1)
2009年(51)
Bsolar
不是我_
wansuiye
ruanxiao
炮雷子
l9366820
wangting
守候心田
cgweb
分类: C/C++
2009-11-10 11:50:55
/*============================================================= 目的:用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数 算法分析:1、 定义整数数组,定义指针数组并将整数数组元素地址赋值给指针数组 2、定义指向指针的数组,将指针数组的首地址赋值给该指针 3、 定义排序函数,函数参数为指向指针的指针 ,返回排序后的指向指针的指针 4、主函数中输出排序后的整数 ============================================================== 作者:最后的村长 时间:2009年10月12日 工具:DEV C++ 4.9.9.2 version:1.0==============================================================*/#include <stdio.h>#include <stdlib.h>void sort(int **pointer,int n);//声明排序函数 /*=============================================================*/int main(){ unsigned n;//定义数组维数 puts("请输入整数数组元素的个数:\n"); scanf("%u",&n);//对数组维数初始化 int a[n];//定义整数数组 int *p[n];//定义指针数组 printf("\n请输入%d个整数",n); //对整数数组初始化,将整数数组的元素地址赋值给指针数组 for(int i=0;i<n;i++) { printf("\na[%d]=",i); scanf("%d",a+i); p[i]=a+i; } //输出排序前的指针数组的值(实际上是整数数组元素的地址) puts("未排序前指针数组的值:"); for(int i=0;i<n;i++) { printf("\np[%d]=%d",i,p[i]); } //定义指向指针的指针 int **pointer; //将指针数组的首地址赋值给指向指针的指针 pointer=p; //调用排序函数 sort(pointer,n); //输出排序后的指针数组的值,看以看出整数数组本身没有发生变化,只是指针数组的值改变了 puts("排序后的指针数组的值:"); for(int i=0;i<n;i++) { printf("\np[%d]=%d",i,p[i]); } puts("\n排序后的整数数组为:\n"); //输出排序后的整数数组的值 for(int i=0;i<n;i++) { printf("\n第%d个元素为:%d",i+1,**(pointer+i)); } system("PAUSE"); return 0;}//排序函数,实现对整数数组的排序,以指向指针的指针作为函数变量 //因为直接对指针数组进行了操作,所以无需返回值就可以实现对整数的排序,实际上是调换的//指针数组的值 void sort(int **pointer,int n){ //定义中转变量 int *temp; //冒泡法排序 for(int i=0;i<(n-1);i++) { for(int j=i+1;j<n;j++) { if(**(pointer+i)<**(pointer+j)) {temp=*(pointer+i);*(pointer+i)=*(pointer+j);*(pointer+j)=temp;} } }}
上一篇:用指向指针的指针对5个字符串排序
下一篇:[转载]计算机书籍大全
登录 注册