《C语言课程设计》 《C语言课程设计》 课程设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
题 目 学 号 姓 名 年级专业 指导教师 完成日期 年 月 日 安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal University 问题描述:通过查找资料以及老师的讲解和指导下,运用C语言编程课本所学过的知识设计一个计算器软件,并要求能够实现加减乘除功能;要求单字符输入即输入的数字或符号不需要按回车键具有一定的容错能力按回车键或等号键则显示计算结果。通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力,加强学生研发调试程序的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格,培养在软件开发中相互合作的团队意识。 基本要求:计算器软件 1) 能够实现加减乘除功能; 2) 要求单字符输入,即输入的数字或符号不需要按回车键; 3) 具有一定的容错能力; 4) 按回车键或等号键则显示计算结果。 系统分析和设计: 1) 刚启动计算器时的状态:开始计算按键开始键“ON”;清零:计算器刚启动时,或者任何时候键入了清零键,计算器所处得状态。 2)一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”,“4”后的状态,此时操作数为“34”。 3)运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。在此时状态如果输入数字,输入数字将作为第一个操作数,开始一次新的计算。 4)一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器状态,如依次输入“2+”或"31*5=/"之后计算器的状态。 5)操作数两元符操作数:输入了一个操作数,一个加减乘除符号和另一个操作数后所处的状态,如依次输入“30/4”或“3+5=/”后的计算器状态。 6)操作数两元符运算结果:输入了一个操作数,一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。 7)错误:执行非法计算后计算器所处的状态。如执行/0计算或者对负数的开方计算后的状态,比如7/0计算后的结果是“0不能做除数”。 结构图: 准备 显示 输入 接收数据 是否能显示结果 结束 流程图 根据提示选择是否开始 根据提示计算的题目数 进行答题 统计结果给出正确答案 2、进入第一步出现如下信息: 开始测试?(输入y开始,输入n退出) 选择y后,进入第二步。 用户输入要练习的题数。 第三步:输出算术式子 用户输入结果进行测试。 第四步:输出测试结果 屏幕显示出本次测试的基本情况。 2.2、部分模块流程图 程序清单 #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]; double x,n,l,z=0,zhan3[50]; typedef struct { 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'&&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++;} j--; for(k=i;k<=j;k++) { n=pow(0.1,l); l=l+1; x=x+n*(a[k]-'0'); } i=j+1; } else i=j; shu->data[++shu->top].d1=x; shu->data[shu->top].d2=++cnt; nibo[++t1]='0'+shu->data[shu->top].d2; nibo[t1+1]='\0'; } else if(a[i]=='(') { zhan2[++t2]=a[i]; i++; } else if(a[i]==')') { j=t2; while(zhan2[j]!='(') { nibo[++t1]=zhan2[j]; nibo[t1+1]='\0'; j--; } t2=j-1; i++; } else if(a[i]=='+') { while(t2>0&&zhan2[t2]!='(') { nibo[++t1]=zhan2[t2]; nibo[t1+1]='\0'; t2--; } zhan2[++t2]=a[i]; i++; } else if(a[i]=='-') { if(a[i-1]=='$') { a[0]='0'; i=0; } else if(a[i-1]=='(') { a[i-1]='0'; a[i-2]='('; i=i-2; t2--; } else { while(t2>0&&zhan2[t2]!='(') { nibo[++t1]=zhan2[t2]; nibo[t1+1]='\0'; t2--; } zhan2[++t2]=a[i]; i++; } } else if(a[i]=='*'||a[i]=='/') { while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#') { nibo[++t1]=zhan2[t2]; nibo[t1+1]='\0'; t2--; } zhan2[++t2]=a[i]; i++; } else if(a[i]=='^'||a[i]=='#') { while(zhan2[t2]=='^'||zhan2[t2]=='#') { nibo[++t1]=zhan2[t2]; nibo[t1+1]='\0'; t2--; } zhan2[++t2]=a[i]; i++; } } while(t2>0) { nibo[++t1]=zhan2[t2]; nibo[t1+1]='\0'; t2--; } j=1;t3=0; while(j<=t1) { if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')// { for(i=1;i<=shu->top;i++) { if((int)(nibo[j]-'0')==shu->data[i].d2) { m=i; break; } } zhan3[++t3]=shu->data[m].d1; } else if(nibo[j]=='+') { zhan3[t3-1]=zhan3[t3-1]+zhan3[t3]; t3--; } else if(nibo[j]=='-') { zhan3[t3-1]=zhan3[t3-1]-zhan3[t3]; t3--; } else if(nibo[j]=='*') { zhan3[t3-1]=zhan3[t3-1]*zhan3[t3]; t3--; } else if(nibo[j]=='/') { zhan3[t3-1]=zhan3[t3-1]/zhan3[t3]; t3--; } else if(nibo[j]=='^') { zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]); t3--; } else if(nibo[j]=='#') { zhan3[t3]=sqrt(zhan3[t3]); } j++; } return zhan3[t3]; } void main() { for(;;) { char x,a[50]; double jieguo; int i=0; a[0]='$'; printf("#章 贤 胜\n"); printf("#
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示开方,^表示乘方(支持负数)\n"); printf("请输入表达式无需输入 = 号 直接回车可输出答案 退出请输入q \n\n"); scanf("%c",&x); if(x=='q') break; while(x!='\n') { a[++i]=x; scanf("%c",&x); } a[i+1]='\0'; jieguo=jisuan(a); printf("\n"); printf("结果为:%lf",jieguo); printf("\n\n\n"); printf("退出请输入q 继续请直接输入\n\n"); } } 测试数据: 1.输入“1+2”按Enter可得到答案 2输入“5-4” 按Enter可得到答案 3.输入“-12*3” 按Enter可得到答案 4.输入“16/4” 按Enter 可得到答案 5.输入“4#(或#4)” 按Enter可得到答案 6.输入“5^(-2)” 按Enter 可得到答案 7.输入“q” 按Enter显示“press any key to continue”退出程序 小结及收获和体会: 本程序在刚开始调试是有许多错误,但在我的努力及同组同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。在刚开始的几次调试中曾出现过不能运行,不能输出正确结果等等问题。经过我的努力和同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。现在它能正确的进行四则运算及一些高级的开方运算。 在本次设计过程中,不仅复习课本上所学的知识,还通过查资料问同学学到了许多书本上没有的知识。从而启发自我,要想写好程 序,在学好课本知识的同时还要多读和程序有关的一些书籍,同时还要多动脑子,尽量把所学的知识综合起来运用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序使必须要细心,不能出错一个字符标点,就连全角半角也的注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心浮气躁,否则修改之后还会有新的错误。 感谢: 能够完成这次课程设计必须感谢C语言老师汤萍萍(是她教会了我C语言这门课程),江婷,张磊同学(她们帮我修改该了几处重要的错误,同时启发我完善了该程序的功能) 5.参考书目 [1] 谭浩强,C程序设计教程,清华大学出版社,2007年 [2] 赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年 [3] 夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年 [4] 谭浩强编著,《C程序设计》,清华大学出版社,1991年 [5] Gary J. Bronson, A First Book of ANSI C (Fourth Edition), Publishing House of Electronics Industry, 2006. [6] Al Kelley, Ira Pohl, A Book on C: Programming in C (Fourth Edition), China Machine Press, 2004. [7] Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, China Machine Press, 2006. 物理与电子信息学院课程设计评定意见 指导教师评语 主要内容包括:设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。 成绩: 签名: 年 月 日 注:本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订。