c语言程序改错:用起泡法对10 个整数从小到大排序。

void sort(int x,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
/**********FOUND**********/
for(j=0;j<n-i;j++)
/**********FOUND**********/
if(x[i]>x[i+1])
{
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
}

main()
{
int i,n,a[100];
printf("please input the length of the array:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
/**********FOUND**********/
sort(n,a);
printf("output the sorted array:\n");
for(i=0;i<=n-1;i++)
printf("%5d",a[i]);
printf("\n");
}

void sort(int *x,int n)
{
int i,j,k,t;
k=1; //增加交换标志
for(i=0;i<n-1&&k;i++)
{
k=0;
/*j<n-i应该改为j<n-1-i,否则数组越界了*/
for(j=0;j<n-1-i;j++)
/**********FOUND**********/
if(x[j]>x[j+1]) //这儿是不是把i敲成j了
{
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
k=1;
}
}
还用就是楼上说的了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-17
main函数的sort函数里你把n和a的位置写反了,应该是sort(a,n)
还有个错误就是在最上面的sort函数里,x应该定义为指针类型
void sort(int *x,int n)