#include<stdio.h>
int main()
{
int a[10]={ 3,6,1,7,8,4,9,5,10,2}, i, j, k, t;
printf("数组中的初值是:\n");
for(i=0;i<10;i++)
{
printf("%-4d",a[i]);
}
for(i=1;i<7;i++)
{
for(j=1;j<7-i;j++)
{
if(a[j]>a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
printf("\n排序后的数组元素是:\n");
for(i=1;i<8;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
return 0;
}
稍微改了下,你看看:
int main()
{
int a[10]={ 3,6,1,7,8,4,9,5,10,2}, i, j, k, t;
printf("数组中的初值是:\n");
for(i=0;i<10;i++)
{
printf("%-4d",a[i]);
}
for(i=1;i<9;i++)
{
for(j=i+1;j<9;j++)
{
if(a[j]>a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf("\n排序后的数组元素是:\n");
for(i=0;i<10;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
return 0;
}
供参考:
#include<stdio.h>
int main()
{
int a[10] = { 3,6,1,7,8,4,9,10,5,2 }, i, j, k, t;
printf("数组中的初值是:\n");
for (i = 0; i < 10; i++)
{
printf("%-4d", a[i]);
}
for (i = 1; i < 9; i++)//修改
{
for (j = 1; j < 9 - i; j++)//修改
{
if (a[j] > a[j + 1])//修改
{
t = a[j];
a[j] = a[j + 1];//修改
a[j + 1] = t;//修改
}
}
}
printf("\n排序后的数组元素是:\n");
for (i = 1; i < 9; i++) //修改
{
printf("%-4d", a[i]);
}
printf("\n");
return 0;
}
你的代码主要是数组排序区间错误
对8个元素排序,for循环不应该是i=1;i<9;i++吗