用指针法对10个整数排序

客官°小女子只卖身不卖艺 2022-04-06 05:15 315阅读 0赞

思路:在主函数中定义数组a存放十个整数,定义int*型变量p并指向a[0]。在主函数中调用sort函数,用指针变量p作为实参。sort函数的形参用数组名。利用选择排序法进行排序。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. void sort(int x[],int n);
  5. int i,*p,a[10];
  6. p=a; //指针变量P指向a[0]
  7. printf("输入十个数:");
  8. for(i=0;i<10;i++)
  9. scanf("%d",p++);
  10. p=a; //指针变量P重新指向a[0] 用指针变量作实参,必须先指向一个对象
  11. sort(p,10);
  12. for(p=a,i=0;i<10;i++)
  13. {
  14. printf("%3d",*p);
  15. p++;
  16. }
  17. return 0;
  18. }
  19. void sort(int x[],int n)
  20. {
  21. int i,j,k,t;
  22. for(i=0;i<n-1;i++) //选择排序法
  23. {
  24. k=i;
  25. for(j=1+i;j<n;j++)
  26. if(x[j]>x[k])
  27. k=j;
  28. if(k!=i)
  29. {
  30. t=x[i];
  31. x[i]=x[k];
  32. x[k]=t;
  33. }
  34. }
  35. }

形参p为指针变量,指向a[0]。形参为数组名x,编译系统把x作为指针变量处理,将a[0]的地址传给形参x,使x也指向a[0]。
在这里插入图片描述

  1. sort函数改用指针变量作形参,程序照样可以执行。
  2. 此时sort函数首部为 sortint*xint n
  3. void sort (int *x,int n)
  4. {
  5. int i,j,k,t;
  6. for(i=0;i<n;i++)
  7. {
  8. k=i;
  9. for(j=i+1;j<n;j++)
  10. if(*(x+j)>*(x+k))
  11. k=j;
  12. if(k!=i)
  13. {
  14. t=*(x+i);
  15. *(x+i)=*(x+k);
  16. *(x+k)=t;
  17. }
  18. }
  19. }

两种sort函数只是形式上的不同,实际上形参都是使用指针变量。

发表评论

表情:
评论列表 (有 0 条评论,315人围观)

还没有评论,来说两句吧...

相关阅读