欢迎来到天天文库
浏览记录
ID:19820303
大小:281.50 KB
页数:20页
时间:2018-10-06
《c语言课程设计-计算机软件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《C语言课程设计》课程设计报告题目学号姓名年级专业指导教师完成日期年月日安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity问题描述:通过查找资料以及老师的讲解和指导下,运用C语言编程课本所学过的知识设计一个计算器软件,并要求能够实现加减乘除功能;要求单字符输入即输入的数字或符号不需要按回车键具有一定的容错能力按回车键或等号键则显示计算结果。通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力
2、,加强学生研发调试程序的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格,培养在软件开发中相互合作的团队意识。基本要求:计算器软件1)能够实现加减乘除功能;2)要求单字符输入,即输入的数字或符号不需要按回车键;3)具有一定的容错能力;4)按回车键或等号键则显示计算结果。系统分析和设计:1)刚启动计算器时的状态:开始计算按键开始键“ON”;清零:计算器刚启动时,或者任何时候键入了清零键,计算器所处得状态。2)一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“
3、2”,或者依次键入“3”,“4”后的状态,此时操作数为“34”。3)运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。在此时状态如果输入数字,输入数字将作为第一个操作数,开始一次新的计算。4)一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器状态,如依次输入“2+”或"31*5=/"之后计算器的状态。5)操作数两元符操作数:输入了一个操作数,一个加减乘除符号和另一个操作数后所处的状态,如依次输入“30/4”或“3+5=/”后的计算器状态。6)操
4、作数两元符运算结果:输入了一个操作数,一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。7)错误:执行非法计算后计算器所处的状态。如执行/0计算或者对负数的开方计算后的状态,比如7/0计算后的结果是“0不能做除数”。结构图:准备显示输入接收数据是否能显示结果结束流程图根据提示选择是否开始根据提示计算的题目数进行答题统计结果给出正确答案用goto语句实现是否循环2、进入第一步出现如下信息:开始测试?(输入y开始,输入n退出)选择y后,进入第二步。用户输入要练习的题数。第三步:输出算术
5、式子用户输入结果进行测试。第四步:输出测试结果屏幕显示出本次测试的基本情况。2.2、部分模块流程图开始定义整型,浮点型数据 charnibo[50],zhan2[50];doublex,n,l,z=0,zhan3[50];依次输入运算数和运算符,数组等复合运算加减乘除复合运算判断是哪种运算方式简单运算乘除先运算得出结果加减后运算得出结果括号内平方开方先运算后乘除加减括号外依次乘除后加减运算输出测试相关结果函数调用实现是否循环程序清单#include#include6、>#includedoublejisuan(chara[]){inti=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; charnibo[50],zhan2[50];doublex,n,l,z=0,zhan3[50];typedefstruct{ doubled1;intd2;}dd;typedefstruct{dddata[50];inttop; }zhan1;zhan1*shu;shu=(zhan1*)malloc(sizeof(zhan1));sh7、u->top=0; while(a[i]!=' '){if(a[i]>='0'&&a[i]<='9'){ z=0; j=i+1; while(a[j]>='0'&&a[j]<='9') {j++;} j--; for(k=i;k<=j;k++) { z=z*10+a[k]-'0'; } j=j+1; x=z; if(a[j]=='.') { l=1; i=j+1; j=i+1; while(a[j]>='0'&&a[j]<='9') {j++;}8、 j--; for(k=i;k<=j;k++) { n=pow(0.1,l); l=l+1; x=x+n*(a[k]-'0'); } i=j+1; } elsei=j; shu->data[++shu->top].d1=x; shu->data[shu->top].d2=++cnt; nibo[++t1]='0'+shu->data[shu->top].d2; nibo[t1+1]=' ';}elseif(a[i]=='('){
6、>#includedoublejisuan(chara[]){inti=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; charnibo[50],zhan2[50];doublex,n,l,z=0,zhan3[50];typedefstruct{ doubled1;intd2;}dd;typedefstruct{dddata[50];inttop; }zhan1;zhan1*shu;shu=(zhan1*)malloc(sizeof(zhan1));sh
7、u->top=0; while(a[i]!=' '){if(a[i]>='0'&&a[i]<='9'){ z=0; j=i+1; while(a[j]>='0'&&a[j]<='9') {j++;} j--; for(k=i;k<=j;k++) { z=z*10+a[k]-'0'; } j=j+1; x=z; if(a[j]=='.') { l=1; i=j+1; j=i+1; while(a[j]>='0'&&a[j]<='9') {j++;}
8、 j--; for(k=i;k<=j;k++) { n=pow(0.1,l); l=l+1; x=x+n*(a[k]-'0'); } i=j+1; } elsei=j; shu->data[++shu->top].d1=x; shu->data[shu->top].d2=++cnt; nibo[++t1]='0'+shu->data[shu->top].d2; nibo[t1+1]=' ';}elseif(a[i]=='('){
此文档下载收益归作者所有