容桂医疗网站建设,什么装修网站做的好的,网站设计的目的是什么,东莞做网页的公司输入一个表达式#xff08;用字符串表示#xff09;#xff0c;求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘’,‘-’, ‘*’,‘/’ ,‘(’#xff0c; ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。字符串长度满足1≤n≤1000
输入描述#x…输入一个表达式用字符串表示求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘’,‘-’, ‘*’,‘/’ ,‘(’ ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。字符串长度满足1≤n≤1000
输入描述输入一个算术表达式 输出描述得到计算结果示 输入32*{12*[-4/(8-6)7]} 输出25
#include stdio.h
#include string.h// 1.无括号 用栈先乘除后加减
// 遇到-继续入栈,遇到*/出栈1个,和新元素计算后入栈
// 2.有括号 左括号开始递归1步骤,右括号出递归结果 入栈
//注意遇到括号内有负号先要变号再入栈
int compute(char *data)
{int stack[1000];int top -1;int len strlen(data);char flag ;int i0;while (i len){int num 0;if(data[i]-){flag -;i;}if (data[i] { || data[i] [ || data[i] (){i;num compute(data);}while (data[i] - 0 0 data[i] - 09){num num * 10 data[i] - 0;i;}switch(flag){case :stack[top] num;break;case -:stack[top] -num;break;case *:stack[top] * num;break;case /:stack[top] / num;break;}flag data[i];if (data[i] } || data[i] ] || data[i] )){i;break;}i;}int ret 0;for (int j 0; j top; j){ret stack[j];}return ret;
}int main()
{char str[1000];scanf(%s, str);int res compute(str);printf(%d, res);return 0;
}