我需要帮助,请解释为什么该程序无法运行!应该执行类似的操作
5 * 4 = 20 4 + 2 * 8 = 20 6/3-2 =0。但是,一切都不正常!我很困惑,为什么不呢?
指令如下:编写一个称为execute的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;
}
答案 0 :(得分:0)
在这里您去Alireza。 问题有好几个,但主要的问题是您的支票中缺少“其他”,以查看要使用的计算器排序。
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;
}