楼主你错误的原因是你的程序中没有保证指针k和m指向的始终是相邻的两个元素,而冒泡排序法始终是在比较两个相邻的元素再进行交换的。
程序代码:
程序代码:#include<stdio.h>
#include<stdlib.h>
#define N 4 //数组取小些,方便输入 ,可以改成10
int main()
{
void sort(int *x);
int a[N],*p;
for(p=a;p<(a+N);p++)
scanf("%d",p);
p=a;
sort(p);
for(p=a;p<(a+N);p++)
printf("%5d",*p);
printf("\n");
system("pause");
}
void sort(int *x)
{
int *k,*m,temp;
for(k=x;k<(x+N);k++)
{
for(m=k;m<(x+N-1);m++)
{
// *t=*k; 这部分改了
if(*m<*(m+1)){
//temp=*t;
// *t=*m;
// *m=temp;}
temp=*m;
*m=*(m+1);
*(m+1)=temp;
}
}
}
}









