关注
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
相关推荐
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
18856次浏览 463人参与
# 秋招什么时候开投比较合适? #
8234次浏览 168人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
22655次浏览 188人参与
# 实习,不懂就问 #
30659次浏览 529人参与
# 软开人,秋招你打算投哪些公司呢 #
101155次浏览 951人参与
# 如何准备秋招 #
12538次浏览 224人参与
# 运营人求职交流聚集地 #
141208次浏览 989人参与
# 每个月的工资都是怎么分配的? #
15517次浏览 328人参与
# 你觉得现在还能进互联网吗? #
4901次浏览 102人参与
# 预测一下26届秋招形势 #
26531次浏览 247人参与
# 你们公司几号发工资 #
19152次浏览 129人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28240次浏览 456人参与
# 晒一晒你收到的礼盒 #
70322次浏览 403人参与
# 打工人的精神状态 #
54371次浏览 993人参与
# 硬件应届生薪资是否普遍偏低? #
72714次浏览 511人参与
# 高考出分的那一天,我__ #
17309次浏览 269人参与
# 大疆今年的机械笔试难吗? #
41549次浏览 456人参与
# 来聊聊你认为的薪资天花板是哪家? #
31002次浏览 175人参与
# 牛客十周岁生日快乐 #
145263次浏览 1613人参与
# 机械实习一天多少钱合适? #
29058次浏览 177人参与
# 大家实习每天都在干啥 #
82958次浏览 506人参与