将一个数组的元素按大小顺序重新排列,必须用for循环语句:
我写了一个,但数组元素有相同的就会输不出最小的数,请各位指点一二.
#include<stdio.h>
int main()
{
int b[3][4],m,n,i,j,max,min,k=10000;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
/*输出原数组*/
printf("原数组:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%3d",a[i][j]);
if(j==3)
printf("\n");
}
}
/*求数组最小值*/
min=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(min>=a[i][j])min=a[i][j];
}
}
/*将数组里的数按大小顺序排列*/
printf("排序后的数组:\n");
max=a[0][0];
for(m=0;m<=2;m++)
{
for(n=0;n<=3;n++)
{
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
{
if(a[i][j]>=k)continue;
else if(max<=a[i][j])
max=a[i][j];
}
}
b[m][n]=max;
printf("%-3d",b[m][n]);
k=max;
max=min;
if(n==3)printf("\n");
}
}
return 0;
}