C 第一次用指针排序 帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/05/30 04:00:56
#include<math.h>
main()
{
int i,a[]={3,4,2,5,1};
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",);
}

sort(p,n)
int *p,n;
{
int i,t,*k;
for(i=1;i<n;i++)
for(k=p+n-1;k>p+i-1;k--)
if(*(k-1)>*k)
{
t=*k;
*k=*(k-1);
*(k-1)=t;
}
}

提示 warning C4013: 'sort' undefined; assuming extern returning int

sort()没有声明,缺少头文件stdio.h

修正后的程序如下:

////////////////////////////////////

#include<math.h>
#include <stdio.h>
sort(int *,int);
main()
{
int i,a[]={3,4,2,5,1};
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",a[i]);
}

sort(p,n)
int *p,n;
{
int i,t,*k;
for(i=1;i<n;i++)
for(k=p+n-1;k>p+i-1;k--)
if(*(k-1)>*k)
{
t=*k;
*k=*(k-1);
*(k-1)=t;
}
}

#include<math.h>

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

main()
{
int i,a[]={3,4,2,5,1};
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",a[i]);
}

首先你子函数的申明根本就不对,然后你要实现这个功能也没必要在用指针在那里转,数组直接就提供了很方便的定位办法了,另外你排序的思路也不是很规范,改了个比较通