请问,我代码这样写哪里错了?(c 语言)


求助,我代码这样写哪里错了:
#include <stdio.h>
#include <stdbool.h>
int main(void) {
char input[1000];
int currentnumber = 0,result = 0;
bool error = false;
char lastOp = '+';
int i = 0;
fgets(input, sizeof(input), stdin);
while(input[i] != '\0') {
if(input[i] >= '0' && input[i] <= '9') {
currentnumber = currentnumber*10 + (input[i] - '0');
}else {
switch(lastOp) {
case '+':
result += currentnumber;
break;
case '-':
result -= currentnumber;
break;
case '*':
result *= currentnumber;
break;
case '/':
if(currentnumber != 0) {
result /= currentnumber;
}else {
error = true;
}
break;
case '=':
printf("%d\n", result);
return 0;
default:
error = true;
break;
}
currentnumber = 0;
lastOp = input[i];
}
if(error) {
printf("Error\n");
return 1;
}
i++;
}
return 0;
}
lz 可以学学用 IDE 的 debug 功能或者用 gdb 来 debug. 在程序运行过程中追踪你觉得可能会出错的变量,看看和自己预期的结果是否一致。
或者可以让 gpt 帮你写一个程序,看看你们写的哪不一样
显然,43 行 return 1 应当改成 return 0(
人生苦短我用 python
print(eval(input()[:-1]))
鼠鼠眼神可能不太好,没见到判断算符优先级的代码逻辑。俺之前写了一段,可以参考参考,用的是算符优先级算法判断运算过程
实验三:C 语言实现直观算符优先分析法.pdf|attachment (312.4 KB)