《简单计算器课程设计报告》由会员分享,可在线阅读,更多相关《简单计算器课程设计报告(16页珍藏版)》请在毕设资料网上搜索。
1、 C 语言集中上机报告 院 系: 通信与信息工程学院 班 级: 电子信息工程 姓 名: 指导教师: 2012 年 05 月 20 日 简简简简单单单单计计计计算算算算器器器器 目目 录录 一 概述 . 3 1.1 课程设计的目的 3 1.2 课程设计的要求 3 1.3 课程设计的主要设计思想 3 二 总体方案设计 . 4 2.1 整体框图 4 2.2 主要功能表 . 4 三 详细设计 5 四 程序的调试与运行结果说明 6 4.1 调试报告 6 4.2 测试结果 7 五 课程设计总结 . 8 六 后记 . 9 七 附录 . 9 参考文献 16 一一 概述概述 1.1 课程设计的目的 为综合应用
2、C 语言程序设计理论知识、进一步提高我们综合解决问题、协 调工作的能力和良好的软件开发习惯,学校为我们特意安排此次课程设计。希 望通过该实习能够进一步激发我们的学习热情,培养我们初步编程的能力,为 后续的学习和发展奠定基础。 1.2 课程设计的要求 掌握从上至下的分析过程;合理完成功能的分解;分析获得实现功能所需 的各种数据结构;功能模块的整合;使用面相过程开发语言建立各种数据结构, 各种结构体;掌握面相过程开发语言的特点,建立各种函数实现各个功能;调 用各个功能模块,完成系统的整体功能;调试、测试各个功能模块,并完成系 统的测试;分析画出各个功能的流程等。 1.3 课程设计的主要设计思想 用
3、不同的数组存储操作数和操作符号,然后要定义运算的优先级,因为我 准备通过输入运算表达式来直接求出运算结果,所以要使用到括号。通过上网 查阅资料,我决定采用逆波兰表达式,它的优势在于只用两种简单操作,入栈 和出栈就可以搞定任何普通表达式的运算。其运算方式如下: 如果当前字符为 变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算, 结果再入栈,最后当表达式扫描完后,栈里的就是结果。由于我对栈的应用不 是很熟练,因此这里改用数组和指针。但基本思路是类似的。 二二 总体方案设计总体方案设计 2.1 整体框图 2.2 主要功能表 序号 文件名 主要功能 备注 1 + 加法 两个操作数
4、2 - 减法 两个操作数 N 键入一个符号或数字 是否为整数? z=z*10+ak-0 x=z; z=z*10+ak-0; n=pow(0.1,l) x=z+n 输出结果 Y N 继续键入符号? Y 退出 x=q? Y 开始 N 3 * 乘法 两个操作数 4 / 除法 两个操作数 5 # 开方 一个操作数 6 乘方 两个操作数 7 Enter 等于 8 q 退出 三三 详细设计详细设计 主要部分的详细流程图 (1)if(ai=0 j-;/回到该操作数的个位 for(k=i;ktop=0;/shu 指向 top=0 的位置 while(ai!=0)/外循环是用 while 语句 if(ai=0
5、j-;/回到该操作数的个位 for(k=i;k=0 j-; for(k=i;kdata+shu-top.d1=x;/先取 shu-top 值,+, (shu-top 先加 1 在使用。 shu-datashu-top.d2=+cnt; nibo+t1=0+shu-datashu-top.d2; nibot1+1=0; else if(ai=() zhan2+t2=ai; i+; else if(ai=) j=t2; while(zhan2j!=() nibo+t1=zhan2j; nibot1+1=0; j-; t2=j-1; i+; else if(ai=+)/对加法的定义 while(t20/将 zhan2t2赋给 nibo+t1 nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=-)/对减法的定义 if(ai-1=$) a0=0; i=0; else if(ai-1=() ai-1=0; ai-2=(; i=i-2; t2-; else while(t20/将括号输出给表达式 nibot1+1=0;/下移一位 t2-;/指向 zhan2 的下一位 zhan2+t2=ai; i+; else if(ai=*|ai=/)/对乘法和除法的定义 whil