You need to enable JavaScript to run this app. C++实现数组最大元素与末尾元素交换及代码修正
优惠活动
大模型
产品
解决方案
定价
更多

C++实现数组最大元素与末尾元素交换及代码修正

数组最大值交换逻辑的代码修正

原代码踩的坑

  • 代码块位置放错:查找最大值的循环里,把交换、打印的代码直接缩到了循环体内部,根本没等遍历完整个数组找到真正的最大值位置,就开始做交换操作,每跑一次循环就交换一次、打印一次,逻辑完全乱掉。
  • 循环变量共用翻车:找最大值用的循环变量i,和后续打印数组用的i是同一个变量,打印的时候把i加到数组长度值,直接把外层找最大值的循环给打断了,根本没遍历完所有元素。
  • 冗余无效代码:定义了imin但从头到尾没用到,属于多余代码,不影响运行但没必要保留。

修正后的可运行代码

#include <iostream>
using namespace std;
int main() 
{
    int i, arr[100], n;
    cin >> n;
    // 读入N个数组元素
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }

    // 完整遍历找到最大值所在的下标
    int max_idx = 0;
    for (i = 1; i < n; i++) 
    {
        if (arr[i] > arr[max_idx])
            max_idx = i;
    }
    // 遍历完确定最大值位置后,再执行一次交换
    int tmp = arr[max_idx];
    arr[max_idx] = arr[n - 1];
    arr[n - 1] = tmp;
    // 统一输出处理后的数组
    for (i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    cout << "\n";
    return 0;
}

运行效果校验

用提供的测试用例验证:
输入内容:

8
3 6 12 1 7 19 25 4

程序会定位到数组里最大值25的下标是6,把这个位置的元素和数组末尾(下标7)的4交换,最终输出结果:
3 6 12 1 7 19 4 25
和预期的样本输出完全匹配。

内容的提问来源于stack exchange,提问作者Andrij Matviiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 23:15:01