冒泡排序法,帮我看看这个程序什么地方错了。

来源:百度知道 编辑:UC知道 时间:2024/05/09 14:34:44
#include <stdio.h>
#define N 5
main()
{
int i,j,c;
int a[N];
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=N-1;j++)
for(i=1;i<=N-j;i++)
if(a[i]>a[+1])
{
c=a[i];
a[i]=a[i+1];
a[i+1]=c;
}
for(i=1;i<=N;i++)
printf("%d",&a[i]);
}

运行之后竟然不排序,出现了一组这样的数字:
-62-60-58-56-54
(和我输入的一组数字无关)
if(a[i]>a[+1])是 if(a[i]>a[i+1]),漏了个i,补上i运行之后还是出现上述的错误!

给你找了两处错误
第一处是
for(j=1;j<=N-1;j++)
for(i=1;i<=N-j;i++)
应该是i<j,作控制条件
第二处是
printf("%d",&a[i]);不是输出地址
你说的(和我输入的一组数字无关)主要是这个地方出的错

改后的:
#include <stdio.h>
#define N 5
main()
{
int i,j,c;
int a[N];
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=N-1;j>=1;j--)
for(i=1;i<=j;i++)
if(a[i]>a[i+1])
{
c=a[i];
a[i]=a[i+1];
a[i+1]=c;
}
for(i=1;i<=N;i++)
printf("%d ",a[i]);
}

for 循环那么多,而且都用i,我头晕了..