#1. #include <stdio.h>
#2. int main()
#3. { int a[10]={21,43,55,12,65,87,25,93,30,62};
#4. int i,k,*pa;
#5. for (k=0;k<10;k++)
#6. printf("%3d",a[k]);
#7. printf("\n\n");
#8. for (k=0;k<9;k++)
#9. { pa=a;
#10. for (i=0;i<10-k-1;i++)
#11. { if ( *pa>*(pa+1) )
#12. { temp=*pa; *pa=*(pa+1); *(pa+1)=temp;
#13. }
#14. pa++;
#15. }
#16. }
#17. for (k=0;k<10;k++)
#18. printf("%3d",*pa++);
#19. printf("\n\n");
#20. return 0;
#21. }
你这个冒泡排序逻辑写的基本没问题 ,但是在输出结果的时候不能用pa这个指针,因为在最后一次的冒泡时 , pa会自加 , 导致pa指向的不是a[0],指向的时a[1],导致输出结果错误。所以你只要在输出结果时pa换成a就行 。