计算器程序问题

标签 c

我正在尝试找出该程序无法运行的原因。它应该执行类似的操作

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

但是,事情并不顺利。

说明是:

Write a C program called calculate that performs simple arithmetic operations. The program takes 3 or 5 arguments from the command line.

我不知道现在该怎么办。

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;
}

关于计算器程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59144970/

相关文章:

c - 部分混淆C代码

c - 在 C 中动态构建二叉树时指针分配的问题

python - c-扩展Python内存泄漏,为什么?

c - GCC Linux C - 找不到编译对象头

c - 不允许使用不完整类型,2 个结构

c - 尝试做一些 C 编程作业并需要一些指导

c - 使用 system() 命令重命名 C 中的文件的语法错误

.net - .NET 会随时接管 C/C++ 吗?

c - 交叉编译时PIC/non-PIC代码错误

c - 将数组从 perl 传输到 c