第2个回答 2011-04-07
首先,你这个不是递归,只是反复的函数调用,递归函数建议你再去理解下
compare(int a,int b);// compare(int *a,int *b)
{ int m;
if (*a<*b)
m=*a;*a=*b,*b=m;
return(0);
}
{for(i=0;i<10;i++)
compare(a[i],a[i+1]);} //compare(&a[i],&a[i+1]);
第3个回答 2011-04-07
#include<stdio.h>
compare(int a,int b)
{ int m;
if (a<b)
{m=a;a=b,b=m;}//这里要加大括号,具体原因就不用说了吧
return(0);
}
main()
{ int a[10],i;
printf("请输入一组数据:\n");
scanf("%d\n",&a[9]);
{for(i=0;i<10;i++)
compare(a[i],a[i+1]);}
}
第4个回答 2011-04-07
首先 你这个不是递归吧
你难道要做的是把最小的移动到最后一个?
#include<stdio.h>
compare(int *a,int *b)
{ int m;
if (*a<*b)
{
printf("\na=%d,",*a);
printf("b=%d",*b);
m=*a;*a=*b,*b=m;
printf(" true ");
printf("a=%d,",*a);
printf("b=%d\n",*b);
}
return(0);
}
main()
{ int a[10],i;
printf(" please enter a array number:\n");
for(i=0;i<10;i++)
{
scanf("%d\n",&a[i]);
}
for(i=0;i<10;i++)
compare(&a[i],&a[i+1]);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
getch();
}
你可以试试