10.21用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和正整数在主函数中输入。最后在主函数中输出。


10.21用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和正整数在主函数中输入。最后在主函数中输出。

每一步都要思维缜密。

#include <stdio.h>

int main(){
    void sort(int **p,int n);
    int n,i,num[10];
    int * p[10];            //声明一个指针数组,里面的10个指针指向的位置不确定
    for(i=0; i<10; i++){    //指针数组初始化!!!
        p[i]=&num[i];        //将第i个整数的地址赋个指针数组的p的第i个元素, 现在指针指向开辟的内存
    }
    printf("input n=");
    scanf("%d",&n);
    printf("\n");
    printf("输入%d个整数\n",n);

    for(i=0; i<n; i++){
    scanf("%d",p[i]);
    }

    //排序
    sort(p,n);
    printf("排序后的结果为:\n");
    for(i=0; i<n; i++){
    printf("%d\n",*(*(p+i)));
    }
    return 0;
}
//用指向指针的指针的方法对n个整数排序
void sort(int **p,int n){
    int i,j,* t;
//    int t;
    for(i=n-1; i>0; i--){
        for(j=0;j<i; j++ ){    //从小到大排序
            if(*(*(p+j))>*(*(p+j+1)))
            {    //逻辑混乱了就画个图出来,会很清楚地展示出来
                t=*(p+j+1);
                *(p+j+1)=*(p+j);
                *(p+j)=t;
                /*
                t=*(*p+j+1);
                *(*p+j+1)=*(*p+j);
                *(*p+j)=t;
                */
            }
        }
    }
}

结果:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM