当前位置:文档之家› 设计一个简单计算器的C语言课程设计报告

设计一个简单计算器的C语言课程设计报告

C语言课程设计报告题目:设计一个简单计算器目录1. 设计目的2. 内容3. 总体设计(有流程图)4. 源程序编写(附上了运行图)5. 执行结果6. 心得体会一、设计目的设计一个简单计算器,在功能上功能尽量模拟windows 操作系统中的计算器,系统界面不做强制要求。

全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、内容1、程序设计的一般步骤a、确定数据结构b、确定算法C、编程d、调试e、总结资料2、基本要求a .设计正确,方案合理,能实现相应功能。

b .界面友好,使用方便。

c .程序精炼,结构清晰。

d .设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。

e .上机演示。

三、总体设计(程序设计组成框图、流程图)四、源程序编与#in clude<stdio.h>#in clude<math.h>#in clude<malloc.h>double jisua n( char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo[50],zha n2[50];double x,n, l,z=0,zha n3[20];typedef struct{double d1;int d2;}dd;typedef struct{dd data[50]; int top;}zhan1; {zha n1 shu;shu.top=0;while(a[i]!='\O'){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*1O+a[k]-'O:}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]-'O');}i=j+1;}else i=j;shu.data[++shu.top].d1=x;shu.data[shu.top].d2=++c nt;n ibo[++t1]='0'+shu.data[shu.top].d2; nibo[t1+1]='\0';}else if(a[i]=='('){zha n2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zha n2[j]!='('){n ibo[++t1]=zha n2[j];nibo[t1+1]='\0:j--;}t2=j-1;i++;}else if(a[i]=='+'){while(t2>0&&zha n2[t2]!='(') { nibo[++t1]=zha n2[t2]; nibo[t1+1]='\0:t2--;}zha n2[++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]='O:a[i-2]='(';i=i-2;\}else{while(t2>0&&zha n2[t2]!='('){nibo[++t1]=zha n2[t2];nibo[t1+1]='\0:t2--;}zha n2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/'){while(zha n2[t2]=='*'||zha n2[t2]=='/'||zha n2[t2]=='"||zha n2[t2]=='@'){nibo[++t1]=zha n2[t2];nibo[t1+1]='\0:t2--;}zha n2[++t2]=a[i];i++;}else if(a[i]=='A'||a[i]=='@'){while(zha n2[t2]=='“||zha n2[t2]=='@'){nibo[++t1]=zha n2[t2];nibo[t1+1]='\0:t2--;}zha n2[++t2]=a[i];i++;}}while(t2>0){nibo[++t1]=zha n2[t2];nibo[t1+1]='\0:t2--;}t1=1;while( nibo[t1]!='\0')if(n ibo[t1]>='0'&&n ibo[t1]<='9'){for(i=0;i<=shu.top;i++){if(n ibo[t1]-'0'==shu.data[i].d2){m=i;break;}}zha n3[++t3]=shu.data[m].d1;}else if(n ibo[t1]=='+'){zha n3[t3-1]=zha n3[t3-1]+zha n3[t3];t3--;}else if(n ibo[t1]=='-'){zha n3[t3-1]=zha n3[t3-1]-zha n3[t3];t3--;}else if(n ibo[t1]=='*'){zha n3[t3-1]=zha n3[t3-1]*zha n3[t3];t3--;}else if(n ibo[t1]=='/'){zha n3[t3-1]=zha n3[t3-1]/zha n3[t3];t3--;}else if(n ibo[t1]=='“){zha n3[t3-1]=pow(zha n3[t3-1],zha n3[t3]); t3--;}else if(n ibo[t1]=='@'){zha n3[t3]=sqrt(zha n3[t3]);}t1++;}return zhan 3[1];}void mai n(){for(;;){char x,a[50];double jieguo;int i=0;a[0]='$:printf("@ 表示开方,A表示乘方\n");printf("请输入表达式,退出请输入q: \n\n"); scan f("%c", &x); if(x=='q') break;while(x!='\n'){a[++i]=x;scan f("%c", &x);}a[i+1]='\0';jieguo=jisua n( a);prin tf("\n");printf("结果为:%lf',jieguo);prin tf("\n\n ”);}}五、执行结果1、输入5 4结果92、输入5 4结果13、输入5 4结果204、输入5 4结果1 图例:注:分别输入5、4,分别进行加减乘除。

结果运行成功。

此图为证明此程序运行0 error ,没错误。

六、心得体会计算机知识博大精深,很奥妙,学过c语言之后我知道我们平时用的那些应用程序都是用各种计算机语言编写的。

这次通过老师布置的课程设计,我学会了更多的计算机知识,觉得编程是一件很费脑细胞同时很有意思的一件事。

我在编写这次简单计算器的程序过程中遇到很多困难,犯了很多错,(例如:执行结果部分没有运算符)这也让我意识到编写c 语言是需要耐心、细心和热心去做的一件事情!最关键的是,这个程序是我们经过一个暑假后的过程来编写的,我发现很多知识都忘了,所以最关键的是我觉得编程就该持之以恒!这次的报告前前后后改了很多遍,我觉得无论是做程序还是报告都应该按照要求的格式来,严谨规范的要求自己才能事半功倍!。

相关主题