计算(1+(2*3)*(3*4))或1+3之类的表达式,哪里出问题了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char expr[100];
char ops[100];
int vals[100];
int top1, top2;
int v1, v2, v;
int i;
char op;
gets(expr);
top1 = top2 = 0;
for (i = 0; i < strlen(expr); ++i)
{
if (expr[i] == '(') continue;
else if (expr[i] == '+') ops[top1++] = '+';
else if (expr[i] == '-') ops[top1++] = '-';
else if (expr[i] == '*') ops[top1++] = '*';
else if (expr[i] == '/') ops[top1++] = '/';
else if (expr[i] == ')')
{
op = ops[--top1];
v1 = vals[--top2];
v2 = vals[--top2];
if (op == '+') v = v2 + v1;
else if (op == '-')v = v2 - v1;
else if (op == '*') v = v2 * v1;
else if (op == '/')v = v2 / v1;
vals[top2++] = v;
}
else vals[top2++] = expr[i] - '0';
}
printf("%d\n", vals[--top2]);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char expr[100];
char ops[100];
int vals[100];
int top1, top2;
int v1, v2, v;
int i;
char op;
gets(expr);
top1 = top2 = 0;
for (i = 0; i < strlen(expr); ++i)
{
if (expr[i] == '(') continue;
else if (expr[i] == '+') ops[top1++] = '+';
else if (expr[i] == '-') ops[top1++] = '-';
else if (expr[i] == '*') ops[top1++] = '*';
else if (expr[i] == '/') ops[top1++] = '/';
else if (expr[i] == ')')
{
op = ops[--top1];
v1 = vals[--top2];
v2 = vals[--top2];
if (op == '+') v = v2 + v1;
else if (op == '-')v = v2 - v1;
else if (op == '*') v = v2 * v1;
else if (op == '/')v = v2 / v1;
vals[top2++] = v;
}
else vals[top2++] = expr[i] - '0';
}
printf("%d\n", vals[--top2]);
return 0;
}