用选择排序法对任意10个整数由大到小排序
我这是哪里错了?
#include
int main()
{
int a[11], i, j, t, max;
for (i = 1; i < 11; i++)
{
scanf("%d", &a[i]);
}
printf("\n");
for (i = 1; i < 10; i++)
{
max = i;
for (j = i + 1; j < 11; j++)
if (a[j] > a[max])
max = j;
t = a[i];
a[i] = a[max];
a[max] = t;
printf("The sorted numbers:\n");
for (i = 1; i < 11; i++)
{
printf("%4d", a[i]);
}
printf("\n");
}
}
17-19行代码同第16行都要放到if的作用域内,如:
#include <stdio.h>
int main()
{
int a[11], i, j, t, max;
for (i = 1; i < 11; i++)
{
scanf("%d", &a[i]);
}
printf("\n");
for (i = 1; i < 10; i++)
{
max = i;
for (j = i + 1; j < 11; j++)
if (a[j] > a[max]){
max = j;
t = a[i];
a[i] = a[max];
a[max] = t;
}
printf("The sorted numbers:\n");
for (i = 1; i < 11; i++)
{
printf("%4d", a[i]);
}
printf("\n");
}
}
每次排序后输出这里, printf("The sorted numbers:\n"); for (i = 1; i < 11; i++) 循环自变量与最外层的循环自变量重复了,修改如下,供参考:
#include <stdio.h>
int main()
{
int a[11], i, j, t, max;
for (i = 1; i < 11; i++)
{
scanf("%d", &a[i]);
}
printf("\n");
for (i = 1; i < 10; i++)
{
max = i;
for (j = i + 1; j < 11; j++)
if (a[j] > a[max])
max = j;
t = a[i];
a[i] = a[max];
a[max] = t;
printf("The sorted numbers:\n");
for (j = 1; j < 11; j++) //for (i = 1; i < 11; i++) 修改
{
printf("%4d", a[j]); //printf("%4d", a[i]); 修改
}
printf("\n");
}
return 0;
}