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

如何在终端执行C++程序时向main函数传入变量值

命令行传参实现三角形斜边计算 & LeetCode测试逻辑

一、修正代码以支持命令行传参

你的原代码里main函数签名不符合C++标准,标准main函数需要通过argc(参数个数)和argv(参数数组)接收命令行输入。修改后的代码如下:

#include <iostream>
#include <cmath>
#include <cstdlib> // 用于atoi字符串转整数

int main(int argc, char* argv[]) {
    // 检查是否传入了两个边长参数
    if (argc != 3) {
        std::cout << "用法:./main.exe <side1> <side2>" << std::endl;
        return 1;
    }

    // 将命令行的字符串参数转为整数
    int side1 = atoi(argv[1]);
    int side2 = atoi(argv[2]);

    // 计算斜边,用double类型避免整数溢出问题
    double hypotenuse = sqrt(pow(side1, 2) + pow(side2, 2));
    // 也可以用更高效的写法:sqrt((double)side1*side1 + (double)side2*side2)

    std::cout << hypotenuse << std::endl;

    return 0;
}

编译与执行步骤

  1. 编译代码(以g++为例):
    g++ main.cpp -o main.exe
    
  2. 执行时直接传入参数:
    ./main.exe 5 5
    
    运行后会输出7.07107左右的结果。

二、LeetCode这类平台的测试用例运行逻辑

LeetCode等在线判题平台不会用命令行传参的方式测试代码,它们会把问题封装成普通函数,而非直接运行你的main函数。

比如平台会要求你实现一个这样的函数:

double calculateHypotenuse(int side1, int side2) {
    return sqrt((double)side1*side1 + (double)side2*side2);
}

之后平台内部会编写测试框架,直接调用这个函数并传入预设的测试用例,示例逻辑如下:

#include <cassert>

// 你的函数实现
double calculateHypotenuse(int side1, int side2) {
    return sqrt((double)side1*side1 + (double)side2*side2);
}

int main() {
    // 测试用例1:3和4,预期结果5.0
    assert(calculateHypotenuse(3, 4) == 5.0);
    // 测试用例2:5和5,预期结果sqrt(50)
    assert(calculateHypotenuse(5, 5) == sqrt(50));
    // 还会加入边界测试用例,比如0、合法范围内的最大值等
    return 0;
}

平台会编译运行包含这些测试用例的代码,通过断言或结果对比判断你的函数是否符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:05:32