同一道题,用选择法对10个整数由小到大(升序)排序。为什么两个程序上面的不对??上面的到底错误出在哪啊?????
#include<stdio.h>
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;n++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
void main()
{
int s[10],i;
for(i=0;i<10;i++)
{printf("please input number");
scanf("%d",&s[i]);}
sort(s,10);
for(i=0;i<10;i++)
printf("%4d",s[i]);
}
/*#include<stdio.h>
void sort(int a[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])k=j;
if(k!=i)
{
t=a[k];a[k]=a[i];a[i]=t;
}
}
}
void main()
{
int s[10],i;
for(i=0;i<10;i++)
{printf("input the array:");
scanf("%d",&s[i]);}
sort(s,10);
printf("output the array:");
for(i=0;i<10;i++)
printf("%4d",s[i]);
}*/
[解决办法]
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;n++) //这里是不是应该是i++?
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}