1、 计算机技术基础课程设计计算机技术基础课程设计 C 语言设计报告语言设计报告 题目题目: 简单的加减乘除运算简单的加减乘除运算 学院学院: 化学工程学院化学工程学院 专业专业: 制药工程专业制药工程专业 一一 . 选题背景 在现实生活中常需要对一些并不深奥但较长或繁琐的数字进行 简单的计算,可大大提高工作效率,节约时间.该程序可运用到 C 语言 中的大部分知识,并且简单易懂,在选择分支下判断符号的优先级别, 调用加减乘除的计算函数并转化表达式即可完成程序的运行.选择该 题目也有能力限制的原因,但不影响涵盖广泛的知识面. 二 . 设计思路: 加减乘除的运算均是双目运算,计算式涉及两个数据和一个计
2、算符号, 所以,首先定义两个结构体变量,在结构体变量中再分别定义两个栈, 所谓栈就是一个稍微复杂的数组, 并且只能从后面加入数据和导出数 据,就是所谓的后到先出,好比堆东西,在最上面的东西是最后放入 的,但是却是最先取出的 struct float a100; int top; /*用来记录栈顶的变量*/ St; /*在外部定义了一个栈,好似定义了一个全局变量,此栈为数据栈*/ struct char b100; int top; /也是用来记录栈顶的变量 Op; /同上,此栈为运算符号栈 为了方便起见,选择用指针做参数来记录数据 void Pop_St(float *e) /用指针作参数直接
3、记录数据,方便 在连续计算中涉及到计算符号优先级别的比较,所以调用函数完 成该比较.扩号的优先级别最高,其次是乘除,再次是加减,用,=,; else e=; else e=0 int top; /*用来记录栈顶的变量*/ St; /*在外部定义了一个栈,好似定义了一个全局变量,此栈为数据栈*/ struct char b100; int top; /*也是用来记录栈顶的变量*/ Op; /*同上,此栈为运算符号栈*/ void Push_St(float e) if (St.top!=99) /*判断栈顶是否满了*/ St.top+; /*没满的话栈顶向前进一个*/ St.aSt.top=e;
4、 /*在栈顶处放入一个数据*/ else printf (“Stack is Fulln“); /*把一个数据推入栈中*/ void Pop_St(float e) if (St.top)!=-1) /*如果栈不是空的话*/ e=St.aSt.top; /*把栈顶数据导出来 */ St.top-; /*栈顶向回退一个*/ else printf(“Stack is emptyn“); /*从栈中取出数据*/ void Push_Op(char e) /*此函数同上 Push_St(float e),只不过因为是两个栈,所以需 另编一个*/ if (Op.top!=99) Op.top+; Op.bOp.top=e; else printf(“Stac