首先,你在main函数里调用Change(),但是这个函数是在后面定义的,那么你要在调用前先声明函数,或者在调用前定义函数!
#include
#define N 10
int Change(int b[],int M)
{
int j,k,l,t;
for(j=0;j
l=j;
for(k=j+1;k
b[k]=b[l];
b[l]=t;
}
} //漏了大括号
return b[l];/*传这个是为了什么。。。*/
}
int main()
{
int i,a[N],c;
c=0;
for(i=0;i
a[c]=Change(a,N); /*你直接传数组名就可以了,这样传进去的是数组的地址,而且你是通过定义宏来设定数组长度的,根本不需要再传N进去。。*/
/*而且a[c]最后结果就是a[0]=b[9],会修改你本来已经排序完毕的数组的值*/
for(c=0;c
return 0;
}
你可以这么写
#include
#define N 10
void Change(int b[])
{
int j,k,t;
for(j=0;j
for(k=j+1;k
b[k]=b[j];
b[j]=t;
}
}
}
int main()
{
int i,a[N],c;
for(i=0;i
Change(a);
for(c=0;c
return 0;
}
a[c]=Change(a[N],N);
====》
a[c]=Change(a,N);
if(b[k] t=b[k];
b[k]=b[l];
b[l]=t;
==》
if(b[k] t=b[j];
b[j]=b[l];
b[l]=t;
if(b[k] t=b[k];
b[k]=b[l];
b[l]=t;
上面的k越界了,所以出问题,修改如下:
if(b[k] { t=b[k];
b[k]=b[l];
b[l]=t;}
for(k=j+1;k
if(b[k] {
t=b[k];
b[k]=b[l];
b[l]=t;
}
我想你是漏掉了花括号{...}吧,尽量不要省略。(没运行,你自己试试)
这个说明你程序有问题,自己检查一遍看看,我用手机看不清楚,好不清晰啊,手机上代码挤压在一起,等我明天用电脑看看