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;
*/
}
}
}
}
結果: