You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++作业求助:不使用数组/vector求最大及第二大数

解决思路与代码优化

不用数组或vector的前提下,找最大数和第二大数可以用更简洁的方式:先确定最大值,再在剩余数里找最大的就是第二大数。下面是具体实现和优化:

核心步骤

  • 初始化两个变量max1(最大值)和max2(第二大数)
  • 逐个对比输入的数,动态更新两个变量:
    • 若当前数大于max1,则把原max1赋值给max2,当前数成为新的max1
    • 若当前数小于等于max1但大于max2,则更新max2为当前数
  • 自动兼容多个数值相等的场景(比如多个最大值时,第二大数与最大值相同)

完整代码

#include <iostream>

int main() {
    std::cout << "Insert five numbers: " << std::endl;
    int num1{}, num2{}, num3{}, num4{}, num5{};
    std::cin >> num1 >> num2 >> num3 >> num4 >> num5;
    std::cout << '\n';

    // 初始化最大值和第二大数
    int max1, max2;

    // 先处理前两个数,确定初始的max1和max2
    if (num1 > num2) {
        max1 = num1;
        max2 = num2;
    } else {
        max1 = num2;
        max2 = num1;
    }

    // 处理第三个数
    if (num3 > max1) {
        max2 = max1;
        max1 = num3;
    } else if (num3 > max2) {
        max2 = num3;
    }

    // 处理第四个数
    if (num4 > max1) {
        max2 = max1;
        max1 = num4;
    } else if (num4 > max2) {
        max2 = num4;
    }

    // 处理第五个数
    if (num5 > max1) {
        max2 = max1;
        max1 = num5;
    } else if (num5 > max2) {
        max2 = num5;
    }

    // 输出结果
    std::cout << "最大数是: " << max1 << std::endl;
    std::cout << "第二大数是: " << max2 << std::endl;

    return 0;
}

代码说明

  • 先通过前两个数初始化max1和max2,避免未初始化的问题
  • 对每个后续数值,仅用两层if判断就完成更新,完全符合作业要求
  • 相比你原来逐个判断所有数的方式,代码更简洁,逻辑清晰,也更容易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:20:54