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

C语言初学者求助:完善命令行参数运算程序的参数校验逻辑

修正后的C语言命令行运算程序

以下是补全并优化后的代码,满足参数校验、运算执行及错误处理需求:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[])
{
    int a, b, result;
    char ch;

    // 校验命令行参数数量:程序名+3个参数,argc应为4
    if (argc != 4) {
        printf("错误:需传入3个参数(两个数字、一个运算符)\n");
        return -9999;
    }

    a = atoi(argv[1]);
    b = atoi(argv[2]);
    ch = *argv[3];

    switch (ch)
    {
        case '+':
            result = a + b;
            break;
        case '-':
            result = a - b;
            break;
        case 'x':
        case '*':
            result = a * b;
            break;
        case '/':
            if (b == 0) {
                printf("错误:除数不能为0\n");
                return -1;
            }
            result = a / b;
            break;
        default:
            printf("错误:非法运算符,支持 +、-、x/*、/\n");
            return -2;
    }

    printf("运算结果:%d\n", result);
    return result;
}

关键修改说明

  • 参数数量校验:通过if (argc != 4)判断输入参数是否符合要求,不符合则直接返回-9999退出程序。
  • 规范main函数:将void main改为标准的int main,确保能正确返回状态码和运算结果。
  • 补充必要头文件:添加<stdlib.h>,解决atoi函数的编译依赖问题。
  • 移除冗余提示:删除原代码中不必要的交互式输入提示,因为参数是通过命令行传入。
  • 增强鲁棒性:
    • 兼容*和x两种乘法运算符,适配不同用户输入习惯;
    • 增加除零校验,避免程序运行时崩溃;
    • 处理未知运算符场景,输出明确错误提示。
  • 明确返回逻辑:正常运算完成后返回结果,错误场景返回对应错误码,符合程序设计规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:35:02