改错题
下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。
请改正程序中的错误,使其能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
fun(intn,int*a)
{
inti,j,p,t;
for(j=0;j<n-1;j++)
{
p=j;
/********found********/
for(i=j+1;i<n-1;i++)
if(a[p]>a[i])
/********found********/
t=i;
if(p!=j)
{
t=a[j];
a[j]=a[p];
a[p]=t;
}
}
}
putarr(intn,int*z)
{
inti;
for(i=1;i<=n;i++,z++)
{
printf("%4d",*z);
if(!(i%10))
printf("\n");
}
printf("\n");
}
main()
{
intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
printf("\n\nBeforesorting%dnumbers:\n",n);
putarr(n,aa);
fun(n,aa);
printf("\nAftersorting%dnumbers:\n",n);
putarr(n,aa);
}
第1处:for(i=j+1;ii<n-1;i++)应改为for(i=j+1;i<n;i++)
第2处:t=I;应改为p=i;