关注
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
相关推荐
2025-12-24 15:18
中南大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
11053次浏览 198人参与
# 帆软软件工作体验 #
10643次浏览 50人参与
# 软开人,秋招你打算投哪些公司呢 #
177079次浏览 1334人参与
# 秋招被挂春招仍然能投的公司 #
22235次浏览 216人参与
# 机械制造2024笔面经 #
1515443次浏览 12994人参与
# 1月小结:你过的开心吗? #
5387次浏览 131人参与
# 实习,不懂就问 #
157765次浏览 1380人参与
# AI求职实录 #
17844次浏览 405人参与
# 没关系,至少我的__很曼妙 #
12839次浏览 225人参与
# 今年春招是金一银二嘛? #
30049次浏览 286人参与
# 秋招被确诊为…… #
286697次浏览 1595人参与
# 聊聊你的职场新体验 #
316822次浏览 1857人参与
# 快手年终开大包 #
4076次浏览 57人参与
# 抛开难度不谈,你最想去哪家公司? #
16801次浏览 242人参与
# 为什么有人零实习也能进大厂? #
15957次浏览 277人参与
# 你的第一家实习公司是什么档次? #
13754次浏览 176人参与
# 如果能重来,就业or读研你选哪个? #
271427次浏览 2611人参与
# 赚钱的意义在这一刻具象化 #
12029次浏览 240人参与
# 考研人,我有话说 #
164136次浏览 1243人参与
# Prompt分享 #
18759次浏览 453人参与
查看12道真题和解析
文远知行公司福利 555人发布