繁体   English   中英

计算器程序问题

[英]Calculator Program Issue

我想弄清楚为什么这个程序不起作用。 它应该执行类似的操作

5 * 4 = 20 4 + 2 * 8 = 20 6/3 - 2 = 0。

然而,事情并没有奏效。

说明是:

编写一个名为calculate 的C 程序来执行简单的算术运算。 该程序从命令行获取 3 或 5 个参数。

我不知道现在该怎么办。

int calc(int x, char op, int y) {
    if (op == '+') {
        return (x+y);
    }
    if (op == '-') {
        return (x-y);
    }
    if (op == 't') {
        return (x*y);
    }
    if (op == '/') {
        return (x/y);
    }
}

int main(int argc, char *argv[]) {
    int a,b,c,result,doOp;
    char op1, op2;

    if (argc == 4 || argc == 6) {
        a = atoi(argv[1]);
        b = atoi(argv[3]);
        op1 = *argv[2];
    } else {
        printf("Wrong number of arguments!");
        return 0;
    }

    if (argc == 6) {
        c = atoi(argv[5]);
        op2 = *argv[4];

        if ((op1 == '+' || op1 == '-') && (op2 == '/' || op2 == 't')) {
            result = calc(a, op1, calc(b, op2, c));
            printf("%d", result);
        }

        if ((op2 == '+' || op2 == '-') && (op1 == '/' || op1 == 't')) {
             result = calc((calc(a, op1, b)), op2, c);
             printf("%d", result);
        } else {
             result = calc((calc(a, op1, b)), op2, c);
             printf("%d", result);
        }
    }

    if (argc == 4) {
        result = calc(a, op1, b);
        printf("%d", result);
    }
    return 0;
}

你去阿里雷萨。 问题有好几个,但主要的问题是检查中缺少“else”以查看要使用的计算器排序。

int calc(int x, char op, int y) {

    if (op == '+') {
        return (x+y);
    }
    if (op == '-') {

        return (x-y);
    }
    if (op == 't') {

        return (x*y);
    }
    if (op == '/') {
        return (x/y);
    }

    printf("Unknown operator!"); // added error check
}

int main(int argc, char *argv[]) {

    int a,b,c,result,doOp;
    char op1, op2;

    if (argc == 4 || argc == 6) {

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

    } else {
        printf("Wrong number of arguments!");
        return 0;
    }

    if (argc == 6) {
        c = atoi(argv[5]);
        op2 = *argv[4];

        if ((op1 == '+' || op1 == '-') && (op2 == '/' || op2 == 't')) {

            result = calc(a, op1, calc(b, op2, c));
            printf("%d", result);
        }
        // added else if
        else if ((op2 == '+' || op2 == '-') && (op1 == '/' || op1 == 't')) {

            result = calc((calc(a, op1, b)), op2, c);
            printf("%d", result);
        }
        else {
            result = calc((calc(a, op1, b)), op2, c);
            printf("%d", result);
        }
    }

    if (argc == 4) {

        result = calc(a, op1, b);
        printf("%d", result);
    }

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM