关注
C语言版本 试了一下 有一个问题 负数不加括号的话 不能正常运算 例如:6+2*-2 输出结果不是2 尝试着改进了一下,代码如下 #include <stdio.h> #include <string.h> #include <ctype.h> int pos; int compute(char* data) { int len = strlen(data); int stack[1000]; int top = -1; int num = 0,flg = 1; char flag = '+'; while (pos < len) { if (data[pos] == '{' || data[pos] == '[' || data[pos] == '(') { pos++; num=compute(data); } while (pos < len && isdigit(data[pos])) { num = num*10 + data[pos] -'0'; pos++; } num *= flg; flg = 1; if(data[pos] == '-' && (flag == '*' || flag == '/') ) { flg = -1; } else { switch (flag) { case '+': stack[++top] = num; break; case '-': stack[++top] = -num; break; case '*': stack[top] *= num; break; case '/': stack[top] /= num; break; } num = 0; flag = data[pos]; } if (data[pos] == '}' || data[pos] == ']'|| data[pos] == ')') { pos++; break; } pos++; } int res = 0; for (int i = 0; i <= top; i++) { res += stack[i]; } return res; } int main() { char data[1000]; while (scanf("%s", data) != EOF) { pos = 0; int res = compute(data); printf("%d\n", res); } return 0; }</ctype.h></string.h></stdio.h>
3
相关推荐
11-19 18:45
西安邮电大学 采编 点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
256264次浏览 2098人参与
# 学历or实习经历,哪个更重要 #
42359次浏览 313人参与
# 北方华创开奖 #
23312次浏览 260人参与
# 地方国企笔面经互助 #
2730次浏览 7人参与
# 0offer是寒冬太冷还是我太菜 #
884507次浏览 7884人参与
# 选完offer后,你后悔学本专业吗 #
12269次浏览 84人参与
# 应届生被毁约被毁意向了怎么办 #
27744次浏览 242人参与
# 你最想要的公司福利是? #
41061次浏览 137人参与
# 查收我的offer竞争力报告 #
18070次浏览 239人参与
# 一觉醒来,我觉醒了超级打工人系统 #
3164次浏览 36人参与
# 面试体验感最好的是哪家? #
83378次浏览 813人参与
# 机械应届生薪资要多少才合适? #
12495次浏览 60人参与
# 如何写一份好简历 #
603801次浏览 8479人参与
# 嵌入式转岗的难度怎么样 #
11057次浏览 250人参与
# 秋招OC许愿 #
227446次浏览 1877人参与
# 秋招被确诊为…… #
58799次浏览 315人参与
# 你觉得第一学历对求职有影响吗? #
14960次浏览 121人参与
# 来聊聊机械薪资天花板是哪家 #
64995次浏览 438人参与
# 面试题刺客退退退 #
137701次浏览 2093人参与
# 总结:哪家公司面试体验感最差 #
26036次浏览 130人参与
# 不给转正的实习,你还去吗 #
1518343次浏览 16987人参与