C冒泡排序问题,程序能运行,但求不出正确结果,请问我错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/07/01 13:32:28
void sort(p,n)
int p[],n;
{int k,j,temp;
for(k=0;k<n-1;k++)
{for(j=0;j<n-k;j++)
if(p[j]>p[j+1])
{temp=p[j];p[j]=p[j+1];p[j]=temp;}
}
}
main()
{int a[3],i,*p;
printf("enter 10 data:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sort(p,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
}

int a[3]改为 int a[10]

{temp=p[j];p[j]=p[j+1];p[j]=temp;}
改为

{temp=p[j];p[j]=p[j+1];p[j+1]=temp;}

void sort(int p[],int n)
{
int k,j,temp;
for( k=0; k < n - 1; k++ )
{
for( j=0; j< n - k - 1; j++ )
if( p[j] > p[j+1] )
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
函数这样写

另外你主函数里面的数组只有三个元素大小,,而要输入十个数,执行的时候要

出错的,应该申明为 a[10]