C语言中冒泡法的问题,看下我写的哪里错了呀?(30分奖励啊)

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:03:32
#define N 10
#include <stdio.h>
void main()
{
int a[N];
void fun(int b[]);
int i;
for(i=0;i<N;i++)
scanf("%d",a[i]);
fun(a);
for(i=0;i<N;i++)
printf("%d",a[i]);
}
void fun(int b[])
{
int m,n,t;
for(m=0;m<9;m++)
for(n=0;n<9-m;n++)
if(b[n]>b[n+1])
{
t=b[n];
b[n]=b[n+1];
b[n+1]=t;
}}
希望哪个厉害的帮我修改下

#define N 10
#include <stdio.h>
int a[N];
void main()
{
void fun(void);
int i;
for(i=0;i<N;i++)
scanf("%d",a[i]);
fun();
for(i=0;i<N;i++)
printf("%d",a[i]);
}
void fun(void)
{
int m,n,t;
for(m=0;m<9;m++)
for(n=0;n<9-m;n++)
if(a[n]>a[n+1])
{
t=a[n];
a[n]=a[n+1];
a[n+1]=t;
}}

a[N] 设成全局,定义N还要定义 int a[N]

这里好像有点问题,改成这个代码:
for(m=0;m<10;m++)
{ for(n=9;n>m;n--)
if(a[n-1]>a[n])
{ t=a[n-1];
a[n-1]=a[n];
a[n]=t;
}
}