用指针方法对10个整数按由大到小顺序排序
法一
int main(){void sort(int x[],int n);//声明sort函数 int i,*p,a[10];p=a;//指针变量p指向a[0] printf("输入10个数:\n");for(i=0;i<10;i++){//输入10个整数 scanf("%d",p++);}p=a;//指针变量p重新指向a[0] sort(p,10);//调用sort函数 for(p=a,i=0;i<10;i++){printf("%d ",*p);//输出排序后的10个数组元素p++;}printf("\n");return 0;}void sort(int x[],int n){//定义sort函数,x是形参数组名int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){//双层循环遍历数组 各数组元素进行比较 if(x[j]>x[k]){//判断出小的元素下标 k=j;//获取大值的下标 }}if(k!=i){//判断是否为原来的下标,不是则运行 t=x[i];//交换元素 x[i]=x[k]x[i]=x[k];x[k]=t;}}}
法二
int main(){void sort(int *x,int n);//声明sort函数 int i,*p,a[10];p=a;//指针变量p指向a[0] printf("输入10个数:\n");for(i=0;i<10;i++){//输入10个整数 scanf("%d",p++);}p=a;//指针变量p重新指向a[0] sort(p,10);//调用sort函数 for(p=a,i=0;i<10;i++){printf("%d ",*p);//输出排序后的10个数组元素p++;}printf("\n");return 0;}void sort( int *x,int n){//形参x是指针变量 int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){//双层循环遍历数组 各数组元素进行比较 if(*(x+j)>*(x+k)){// *(x+j)就是x[j],其他亦然 k=j;}}if(k!=i){t=*(x+i);*(x+i)=*(x+k);*(x+k)=t;}}}
不懂请留言,谢谢!