C语言用绝对值排序

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:20:42
大家帮忙看下 哪里错了 调试不正确
#include <stdio.h>
#include <math.h>
int main()
{
int t,a[101],n,i,j;
scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n-1;i++)
{
for(j=0;j<n-i;j++)
{
if(abs(a[i])>abs(a[i+1]))
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for (i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}

#include <stdio.h>
#include <math.h>
int main()
{
int t,a[101],n,i,j;

scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%d",&a[i]);

for (i=1;i<n;i++)
for(j=0;j<n-i;j++)
{
if(abs(a[j])>abs(a[j+1]))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}

for (i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}

试一下这样改?!应该没问题了!

你的冒泡排序有问题,把j写成i相当于单层循环,“for(j=0;j<n-i;j++)”这句不起作用!

if(abs(a[i])>abs(a[i+1]))
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
把I改成J

绝对值是fabs
if(fabs(a[i])>fabs(a[i+1]))