表达式计算程序设计报告

上传人:博****1 文档编号:495186865 上传时间:2023-04-13 格式:DOCX 页数:17 大小:245.98KB
返回 下载 相关 举报
表达式计算程序设计报告_第1页
第1页 / 共17页
表达式计算程序设计报告_第2页
第2页 / 共17页
表达式计算程序设计报告_第3页
第3页 / 共17页
表达式计算程序设计报告_第4页
第4页 / 共17页
表达式计算程序设计报告_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《表达式计算程序设计报告》由会员分享,可在线阅读,更多相关《表达式计算程序设计报告(17页珍藏版)》请在金锄头文库上搜索。

1、*大学*学院C语言课程设计报告专 业:班 级:学 号:姓 名:课 题:指导教师:报告成绩:日 期:*年*月*日1、程序设计的目的12、课程设计要求13、设计题目分析13. 1题目简介13.2设计要求 14、课程设计内容14. 1总体设计14. 1.1设计框架14. 1.2系统功能模块图24. 2详细设计24. 2.1主函数以及包含的信息24. 2.2栈的建立与销毁34. 2.3输入字符串的判断44. 2.4输入字符串优先级的比较54. 3调试与测试75、设计心得与总结116、建议127、评阅意见13参考文献.131、课程设计目的本课程设计是重要的实践性环节之一,是在学生学习完高级程序设计语言

2、(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握。2. 掌握C语言编程和程序调试的基本技能。3. 利用C语言进行基本的软件设计。4. 掌握书写程序设计说明文档的能力。5. 提高运用C语言解决实际问题的能力。2、课程设计要求1. 分析课程设计题目的要求。2. 写出详细设计说明。3. 编写程序代码,调试程序使其能正确运行。4. 设计完成的软件要便于操作和使用。5. 设计完成后提交课程设计报告。3、设计题目分析3. 1题目简介表达式计算简单的四则运算,包含“+、一、*、/、(、)”。例如,输入3*(8.0+(4/3),输出28。提示

3、:错误的表达式提示错误。例如:2+*3输出:表达式输入错误。3. 2设计要求输入一个表达式,输出其结果。表达式由数字+ - * / ()组成。4、课程设计内容4. 1总体设计4. 1.1设计框架:第一步:建立栈运算。包含符号栈和数字栈:InitStack(&fuhao);InitStack(&num);/*符号栈和数字栈*/。第二步:获得连接空间:head=s1=input();第三步:释放连接空间:freelist(head);第四步:销毁栈运算:DestroyStack(&fuhao);DestroyStack(&num);4. 1.2系统功能模块图:图1系统功能模块图4. 2详细设计:4

4、. 2.1主函数以及包含的信息:int main()(int n,a,b;stack fuhao,num;/*符 号栈和数字栈 */struct svalue *head,*s1;/*存放数字符号链表的头地址*/head=s1=input();/* 获得链表头 */InitStack(&fuhao);InitStack(&num);Push(&fuhao,0);/*将 0 存入符号栈*/*计算处理部分*/while(s1)if(s1-flag=1)Push(&num,s1-value);s1=s1-next;elseswitch(compare(GetTop(&fuhao),s1-value)

5、case value);s1=s1-next;break;case =:Pop(&fuhao,&n);s1=s1-next;break;case :Pop(&num,&b);Pop(&num,&a);Pop(&fuhao,&n);Push(&num,operate(a,n,b);break;Pop(&num,&a);printf(n 结果=%dn,a);freelist(head);DestroyStack(&fuhao);DestroyStack(&num);printf(完成!”);getch();此模块实现的是符号栈和数字栈的建立几销毁以及链接的获得和释放,是整个 程序中最为关键的一部分

6、,同时也是主函数中最为核心的一部分。其中包含了 head=s1=input();/*获得链表头*/、ush(&fuhao,0);/*将 0 存入符号栈*/。其中 input()函数为刺程序中一重要函数。4. 2.2栈的建立与销毁:typedef struct/* 栈结构体 */hatype *base;hatype *top;int stacksize;stack;栈的建立以ef struct/*栈结构体*/为开始,栈的内容有hatype *base, hatype *top, int stacksize 三部分组成。int DestroyStack(stack *s)/*销毁栈,释放内存 *

7、/free(s-base);return STACK_OK;栈的销毁以int DestroyStack(stack *s)/*销毁栈,释放内存*/为开始。从建立栈到释放栈经历了空栈的设置int ClearStack(stack *s)、是否为空栈的判断 int StackEmpty(stack *s)、加入栈的值 int Push(stack *s,hatype n)、栈中值的移出 int Pop(stack *s,hatype *p)、栈顶值 int GetTop(stack *s)、栈底值 int GetBase(stack *s,hatype *p)。4. 2.3输入字符串的判断:输入的

8、字符串有两种一种是程序能够识别的也就是正确的,一种是程序不能识 别的也就是错误的。能够识别的进入下一环节进行优先级的判断,在这里先讨论不 能识别的一种情况。输入的字符串程序无法识别系统会弹出“表达式书写错误”的字样。如下图所示图2此功能在程序中实现在void haerror(int i)(/* 出错提示 */switch(i)(case 1:puts(n数字符号链表无法申请储存空间!”);break;case 2:puts(n 表达式书写错误!);break;getch();exit(0);若输入的字符串能够识别系统则进行更为细致的判断,既数字与符号的判断。if(stri9) & stri!=

9、+ &stri!=- & stri!=* &stri!=/ & stri!=( & stri!=)haerror(2);+i;数字的判断:while(n=stri)(if(n=0 & n=9)/*判 断为数字 */sum=sum*10+n-0;if(stri+19)(s1=(struct svalue *)malloc(sizeof(struct svalue);if(!f)(head=s1;+f;else s2-next=s1;s1-flag=1;s1-value=sum;sum=0;s2=s1;符号的判断:else/*为符号*/s1=(struct svalue *)malloc(size

10、of(struct svalue);if(!f)head=s1;+f;else s2-next=s1;s1-flag=0;s1-value=n;s1-next=s2;s2=s1;i+;4. 2.4输入字符串优先级的比较:int compare(int a,int b)/*符 号优先性比较 */if(a=+ | a=-)switch(b)case +:case -:case ):case 0:return ;case *:case /:case (:return ;case (:return ;if(a=()switch(b)(case +:case -:case *:case /:case (

11、:return ;case ):return =;case 0:haerror(2);/* 表达式出错 */if(a=0)switch(b)case +:case -:case *:case /:case (:return inist rat orDebug0. exe一二欢迎使用本程序-请输入四则运宣表达式,可以包含图3二,错误的输入导致的错误而使程序不能正常运行。如下图所示。避免此问题的 出现应该做到有整洁适宜的操作环境,仔细检查输入时的语言状态栏。图5三,下面演示几组正确的输入与输出结果图,其中包含了加法、减法、乘法、除法 和简单的混合运算。图7减法运算图9除法运算5、设计心得与总结:从

12、开学看到这份课程设计要求到确定自己的设计题目总共用了两周多一点的时 间,在上一学期中学习了(3程序设计这门课程,此次作业是对C语言熟练掌握 和运用的一次集中考察和锻炼。说实话在刚拿到作业时一头雾水,更本不知道怎样 做,就连基本的选题都是问题。最后在老师的讲解和说明后才对这次的设计作业有 了一个比较彻底的认识,在再三斟酌之下确定了自己的设计题目表达式计算。确定自己的题目之后就开始着手去做。首先,对自己的题目进行一个总体的分 析,确定自己该从何下手、程序最后会成什么样子、在这个过程中最应该注意的是 什么问题,当这些问题在老师和同学的帮助下得到解决后根据老师的提示在网上找 到原代码进行修改和填充。万事开头难,良好的开始是成功的一半。这是开始也同 时是最繁琐的一步,要阅读有关表达式计算的书籍和到网上浏览、筛选大量的有关 程序原代码。等到确定自己的源代码和初步的修改之后已是期中。原代码中有些自己没有见 过的函数,开始以为知道函数的名字的简

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号