#include
main()
{
int a[10], tem = 0, smlr;
for (int i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
for (int old = 0; old < 9; old++)
{
smlr = old;
for (int new = 1 + old; new < 10; new++)
if (a[new] < a[smlr])
smlr = new;
if (smlr != old)
{
tem = a[smlr];
a[smlr] = a[old];
a[old] = tem;
/*
tem = a[old];
a[old] = a[smlr];
a[new] = tem;
*/
}
}
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
return 0;
}
请问注释内和注释外的交换部分有什么区别,为什么其中一个会报错
注释里面的new这里应该会编译报错吧,你把他定义到外面的话这里new会变成10 a[10]会造成数组越界
a[new] = tem;
可能是数组访问越界了
a[new] = tem;
改为
a[smlr] =tem;
new的值在循环中已经存进smlr里了,而出了循环new的值已经越界了,你这样用当然报错了