做旅游宣传图的网站有哪些网上卖货有哪些免费平台
2026/4/24 5:16:11 网站建设 项目流程
做旅游宣传图的网站有哪些,网上卖货有哪些免费平台,公司用于做网站的费用怎么做账,wordpress 显示一篇author: hjjdebug date: 2026年 01月 12日 星期一 14:27:03 CST descrp: 运算表达式求值c代码(用栈实现) 文章目录1. 运算是计算机的强项2 字符串解析函数3. 代码说明:4. 代码计算机与人的接口. 让计算机理解人的意图.计算机最擅长固定的操作, 它的要素是存储数据,对数据运算.人…author: hjjdebugdate: 2026年 01月 12日 星期一 14:27:03 CSTdescrp: 运算表达式求值c代码(用栈实现)文章目录1. 运算是计算机的强项2 字符串解析函数3. 代码说明:4. 代码计算机与人的接口. 让计算机理解人的意图.计算机最擅长固定的操作, 它的要素是存储数据,对数据运算.人机的接口必须要按照一种规则, 规则应该是越简单越好, 但也要符合人的习惯,不能迁就计算机.我们熟知的运算表达式求值无疑就是最基础的人机交互接口.规则是先计算括号内的值, 乘除运算高于加减运算1. 运算是计算机的强项至于运算,非常简单. 一个函数就能搞定.假定数值是int型// 计算函数int applyOp(int a, int b, char op) {switch (op) {case ‘’: return a b;case ‘-’: return a - b;case ‘*’: return a * b;case ‘/’: return a / b;}return 0;}关键是如何调用到这个函数. 调用逻辑怎样写,这就是程序框架.而且用户的输入是灵活的, 它可能输入任何表达式, 并不会是固定的.2 字符串解析函数如何应对不同的字符串?这离不开字符串解析函数. 由于字符串并不是固定的,所以必须按照约定的规则进行.把字符串一个字符一个字符的进行分析, 分析出词,形成token, 这叫词法分析.由词根据前后关系解析出意义这叫句法分析. 这个解析的过程都在主框架中.把字符串分析完了,结果也就出来了.3. 代码说明:实现了基本的四则运算 - * /和括号优先级处理使用两个栈分别存储操作数和操作符支持多位数操作数和空格分隔符通过优先级函数控制运算顺序主函数实现命令行交互核心: 用一个栈来存储数据,用一个栈来存储操作符号.当发现满足运算条件时,执行运算.4. 代码$ cat main.c#includestdio.h// for printf#includestdlib.h// for exit,malloc,free#includestring.h// for strchr, strlen#includeassert.h// for assert// 优先级函数intprecedence(charop){if(op||op-)return1;if(op*||op/)return2;return0;}// 操作数判断intisDigit(charc){return(c0c9);}// 计算函数intcalculate(inta,intb,charop){switch(op){case:returnab;case-:returna-b;case*:returna*b;case/:returna/b;}return0;}#defineAPPLY_OPERATOR\assert(val_index2);\assert(op_index1);\intval2values[val_index-1];\val_index--;\intval1values[val_index-1];\val_index--;\charopops[op_index-1];\op_index--;\values[val_index]calculate(val1,val2,op);// 求值函数intevaluate(char*exp){inti;intlenstrlen(exp);if(len0)return0;// 万一是空串int*valuesmalloc(len*sizeof(int));// 操作数栈char*opsmalloc(len*sizeof(char));// 操作符栈intval_index0,op_index0;for(i0;ilen;i){if(exp[i] )continue;// 忽略空格if(isDigit(exp[i])){intval0;while(ilenisDigit(exp[i])){val(val*10)(exp[i]-0);i;}values[val_index]val;i--;// 调整索引}elseif(exp[i](){ops[op_index]exp[i];}elseif(exp[i])){while(op_index0ops[op_index-1]!(){APPLY_OPERATOR;}if(op_index0ops[op_index-1](){op_index--;}}elseif(strchr(-*/(),exp[i])NULL){printf(错误: 非法字符 %c\n,exp[i]);exit(EXIT_FAILURE);}else{while(op_index0precedence(ops[op_index-1])precedence(exp[i])){APPLY_OPERATOR;}ops[op_index]exp[i];}}while(op_index0){APPLY_OPERATOR;}intresultvalues[0];free(values);free(ops);returnresult;}intmain(intargc,char*argv[]){/* char buf[1000]; printf(请输入运算表达式: ); char *pfgets(buf, sizeof(buf), stdin); assert(p!NULL); buf[strcspn(buf, \n)] 0; // 去除换行符 int result evaluate(buf); */if(argc!2){printf(Usage: %s expression\n,argv[0]);printf(Example: %s \12*3\\n,argv[0]);exit(0);}intresultevaluate(argv[1]);printf(结果: %d\n,result);return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询