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