按升序对数组进行排序嵌套循环问题

Sort array in ascending order nested loop problem

本文关键字:排序 嵌套循环 问题 升序 数组      更新时间:2023-10-16

我正在使用嵌套的 for 循环按升序重新排列数组。

问题出在第二个(嵌套的(for循环中的(y = x + 1(。我收到以下错误: ISO "for"范围的名称查找更改了"x"[-允许]

int i, y, temp;
cout << "How many elements should be stored in array? ";
cin >> i;
int arr [i];
for (int k = 0; k < i; k++)
{
cout << "Enter value for element at index " << k << ": ";
cin >> arr[k];
}
for( int x = 0; x < i; x++);
{
for (int y = x + 1; y < i; y++)
{
if (arr[y] < arr[x])
{
temp = arr[x];
arr[x] = arr[y];
arr[x] = temp;
}
}
}

错误:ISO "对于"范围更改了"x"的名称查找 [-允许]

注意最后的;

for( int x = 0; x < i; x++);

并将其删除。

如果你不这样做,那么下一个{会启动一个未定义x的块,它在最后一个;死亡

后面有一个分号

for( int x = 0; x < i; x++);

需要将其删除以包含以下块。

问题是你有

int i, y, temp;

及以后

for (int y = x + 1; y < i; y++)

后面的y隐藏了前一个声明的。
隐藏变量可能是错误的根源。