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