题目来自《程序设计导引及在线实践》9.4思考题 转化逆波兰式为正常的表达式
#include <stdio.h> #include <string.h> //输入样例: //* + 11.0 12.0 + 24.0 35.0 //输出样例 //((11.0+12.0)*(24.0+35.0)) char* exp2() { char a[100]; char buff1[256]; char buff2[256]; char buff_sum[256]; scanf("%s",a); switch (a[0]) { case '+': strcpy(buff1,exp2()); strcpy(buff2,exp2()); sprintf(buff_sum,"(%s+%s)",buff1,buff2); return buff_sum; case '-': strcpy(buff1,exp2()); strcpy(buff2,exp2()); sprintf(buff_sum,"(%s-%s)",buff1,buff2); return buff_sum; case '*': strcpy(buff1,exp2()); strcpy(buff2,exp2()); sprintf(buff_sum,"(%s*%s)",buff1,buff2); return buff_sum; case '/': strcpy(buff1,exp2()); strcpy(buff2,exp2()); sprintf(buff_sum,"(%s/%s)",buff1,buff2); return buff_sum; default: return (a); } } int main(int argc, char* argv[]) { char res[256]; strcpy(res,exp2()); printf("%s",res); return 0; }