C 语言集中上机实验报告 一、 需求分析 (1) 制作一个计算器,能够计算四则混合运算以及乘方和开方,并显示出正确的结果
(2) 程序能根据运算符的高低进行运算(开放符号置左置右不影响正常运算) (3) 可以输入括号 二、 设计思路 (1) 运用栈以及结构体来实现,将数字与运算符分别放在结构体与栈里面,将栈以及结构体里的字符数值一一匹配计算,将得出的结果保存到另一个栈里(z han3)
(2) 开始,对所输入的字符串进行转化,把运算符存放在 z han2 里面,把数值存放到 data 结构体里面,然后进行运算和操作
(3) 运用循环来实现无限输入,用数组 nibo 来跟踪整个过程,每次运算后将值置空,若检测到空,计算得出结果,退出输入 q
三、 流程图 四、 主程序段 #include #include #include double jisuan(char a[]) { int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo[50],zhan2[50];//zhan2 存放的是运算符 double x,n,l,z=0,zhan3[50];//暂存结果 typedef struct { 括号 读 取 表 达式 读 取 括 号里 的 表 达式 乘 除 方运算 Y NY Y 乘 除 方运算 NN计算乘除 计算加减 计算乘除 计算加减 转到括号外 输出结果 计算方 计算方 开始 double d1; int d2; }dd; typedef struct { dd data[50]; int top; }zhan1; zhan1 *shu; shu=(zhan1 *)malloc(sizeof(zhan1)); shu->top=0; while(a[i]
='\0') { if(a[i]>='0'