#include <iostream>
using namespace std;
int main()
{
int A[6]={3,7,9,4,6,1};
int max;
max = A[0];
for(int i=0; i< 6; i++)
{
if(A[i] > max)
{
max = A[i];
}
}
//cout << max <<"\n";
int temp;
temp=A[0];
A[0]=max;
max = temp;
for(int i=0;i<6;i++)
{
cout << A[i] << endl;
}
return 0;
}
我想将最大值与decared数组中的第一个值进行交换,但它只将第一个值替换为最大值,而最大值也保留在其位置。
答案 0 :(得分:0)
您正在使用变量A[0]
交换max
,而不是您从其获取其值的数组元素。
你可以使max
指针,以便它可以用来访问数组元素;或者您可以记住值来自的数组索引。或者您可以使用标准库:
swap(A[0], *max_element(begin(A), end(A)));
答案 1 :(得分:0)
max
只是一个整数,它不指向数组中的任何位置,因此分配它不会更改数组。您可以将max
更改为指针,以便更改它会更改它指向的值:
int main()
{
int A[6]={3,7,9,4,6,1};
int *max;
max = &A[0];
for(int i=0; i< 6; i++)
{
if(A[i] > *max)
{
max = &A[i];
}
}
int temp;
temp=A[0];
A[0]=*max;
*max = temp;
for(int i=0;i<6;i++)
{
cout << A[i] << endl;
}
return 0;
}
答案 2 :(得分:0)
逻辑略有错误。实际上,您正在交换变量max
的值而不是具有max
值的元素。
如果要将元素与最大值交换,请跟踪其位置,如下所示:
if(A[i] > max)
{
max = A[i];
pos = i;
}
在交换时,请按如下方式使用:
int temp;
temp=A[0];
A[0]=A[pos];
A[pos] = temp;
注意:另一种方法是使用指针,这只是一个简单的非指针方法。