切换数组中的两个元素
switching two elements in an array
水平很基础,所以请耐心等待。有一些类似的主题,但没有找到我的运气。我想要做的是在一行中找到最大元素,然后将其放在同一行的最后一个元素的位置,而最后一个元素将放在程序找到的最大元素的位置。
所以我在 C 中得到了这段代码,它应该打印原始数组,执行魔术,然后打印修改后的数组。它确实在第一行找到最大元素,将它放在同一行的最后一个位置,但不进行切换——最后一个元素不会跳到最大元素的位置。我知道我做了一些愚蠢而简单的事情,但我就是找不到错误在哪里。非常感谢任何帮助!
int main()
{
int a[3][4]={23,32,45,12,53,75,38,72,14,37,42,82}, i, j, t, l, max=a[1][0];
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%d ", a[i][j]);
}
}
for(l=0;l<4;l++){
if(a[1][l]>max){max=a[1][l];}
}
t=a[1][3];
a[1][3]=max;
max=t;
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%d ", a[i][j]);
}
}
return 0;
}
下面是它 returns(原始数组):
23 32 45 12
53 75 38 72
14 37 42 82
(修改后的数组):
23 32 45 12
53 75 38 75
14 37 42 82
你还需要存储最大值的位置:
int max_pos = 0; //same as the initial max - a[1][0]
for(l=0;l<4;l++){
if(a[1][l]>max){max=a[1][l]; max_pos=l;}
}
然后当你切换它们时:
t=a[1][3];
a[1][3]=max;
a[1][max_pos] = t;
我假设您知道这只发生在第二行。如果要对所有行执行此操作,则必须将位置存储在数组中。
水平很基础,所以请耐心等待。有一些类似的主题,但没有找到我的运气。我想要做的是在一行中找到最大元素,然后将其放在同一行的最后一个元素的位置,而最后一个元素将放在程序找到的最大元素的位置。
所以我在 C 中得到了这段代码,它应该打印原始数组,执行魔术,然后打印修改后的数组。它确实在第一行找到最大元素,将它放在同一行的最后一个位置,但不进行切换——最后一个元素不会跳到最大元素的位置。我知道我做了一些愚蠢而简单的事情,但我就是找不到错误在哪里。非常感谢任何帮助!
int main()
{
int a[3][4]={23,32,45,12,53,75,38,72,14,37,42,82}, i, j, t, l, max=a[1][0];
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%d ", a[i][j]);
}
}
for(l=0;l<4;l++){
if(a[1][l]>max){max=a[1][l];}
}
t=a[1][3];
a[1][3]=max;
max=t;
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%d ", a[i][j]);
}
}
return 0;
}
下面是它 returns(原始数组):
23 32 45 12
53 75 38 72
14 37 42 82
(修改后的数组):
23 32 45 12
53 75 38 75
14 37 42 82
你还需要存储最大值的位置:
int max_pos = 0; //same as the initial max - a[1][0]
for(l=0;l<4;l++){
if(a[1][l]>max){max=a[1][l]; max_pos=l;}
}
然后当你切换它们时:
t=a[1][3];
a[1][3]=max;
a[1][max_pos] = t;
我假设您知道这只发生在第二行。如果要对所有行执行此操作,则必须将位置存储在数组中。