该程序是:输入8个数,将这8个数从小到大排序。我用了选择排序。
为什么排序结果会溢出?又要怎么改?
#include
int main()
{
int a[8];
int i, j, t;
int h,m;
printf("input 8 number:\n");
for (i = 0; i < 8; i++)
scanf_s("%d", &a[i]);
printf("\n");
for (j = 8; j >= 0; j--)
{
for (i = 0; i < j + 1; i++)
{
m = a[j];
h = j;
if (m < a[i])
{
m = a[i];
h = i;
t = a[j], a[j] = a[i], a[i] = t;
}
}
}
printf("顺序是:\n");
for(i=0;i<8;i++)
printf("%d ", a[i]);
return 0;
}
输入的是
5 3 7 4 9 8 2 1
运行结果是
-858993460 1 2 3 4 5 7 8
for (j = 7; 8越界了