设计一个简单计算器的C语言课程设计报告.docx
《设计一个简单计算器的C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《设计一个简单计算器的C语言课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
![设计一个简单计算器的C语言课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-2/2/f7c8f321-aa54-4254-b9d6-21c2c5d76b61/f7c8f321-aa54-4254-b9d6-21c2c5d76b611.gif)
设计一个简单计算器的C语言课程设计报告
C语言课程设计报告
题目:
设计一个简单计算器
1.设计目的
2.内容
3.总体设计(有流程图)
4.源程序编写(附上了运行图)
5.执行结果
6.心得体会
一、设计目的
设计一个简单计算器,在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、内容
1、程序设计的一般步骤
a、确定数据结构
b、确定算法
c、编程
d、调试
e、总结资料
2、基本要求
a.设计正确,方案合理,能实现相应功能。
b.界面友好,使用方便。
c.程序精炼,结构清晰。
d.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。
e.上机演示。
三、总体设计(程序设计组成框图、流程图)
四、源程序编写
#include
#include
#include
doublejisuan(chara[])
{
inti=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;
charnibo[50],zhan2[50];
doublex,n,l,z=0,zhan3[20];
typedefstruct
{
doubled1;
intd2;
}dd;
typedefstruct
{
dddata[50];
inttop;
}zhan1;
zhan1shu;
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;
}
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]='\0';
}
elseif(a[i]=='(')
{
zhan2[++t2]=a[i];
i++;
}
elseif(a[i]==')')
{
j=t2;
while(zhan2[j]!
='(')
{
nibo[++t1]=zhan2[j];
nibo[t1+1]='\0';
j--;
}
t2=j-1;
i++;
}
elseif(a[i]=='+')
{
while(t2>0&&zhan2[t2]!
='(')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
elseif(a[i]=='-')
{
if(a[i-1]=='$')
{
a[0]='0';
i=0;
}
elseif(a[i-1]=='(')
{
a[i-1]='0';
a[i-2]='(';
i=i-2;\
}
else
{
while(t2>0&&zhan2[t2]!
='(')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
}
elseif(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++;
}
elseif(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--;
}
t1=1;
while(nibo[t1]!
='\0')
{
if(nibo[t1]>='0'&&nibo[t1]<='9')
{
for(i=0;i<=shu.top;i++)
{
if(nibo[t1]-'0'==shu.data[i].d2)
{
m=i;
break;
}
}
zhan3[++t3]=shu.data[m].d1;
}
elseif(nibo[t1]=='+')
{
zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];
t3--;
}
elseif(nibo[t1]=='-')
{
zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];
t3--;
}
elseif(nibo[t1]=='*')
{
zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];
t3--;
}
elseif(nibo[t1]=='/')
{
zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];
t3--;
}
elseif(nibo[t1]=='^')
{
zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);
t3--;
}
elseif(nibo[t1]=='')
{
zhan3[t3]=sqrt(zhan3[t3]);
}
t1++;
}
returnzhan3[1];
}
voidmain()
{
for(;;)
{
charx,a[50];
doublejieguo;
inti=0;
a[0]='$';
printf("表示开方,^表示乘方\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");
}
}
五、执行结果
1、输入54
结果9
2、输入54
结果1
3、输入54
结果20
4、输入54
结果1
图例:
注:
分别输入5、4,分别进行加减乘除。
结果运行成功。
此图为证明此程序运行0error,没错误。
六、心得体会
计算机知识博大精深,很奥妙,学过c语言之后我知道我们平时用的那些应用程序都是用各种计算机语言编写的。
这次通过老师布置的课程设计,我学会了更多的计算机知识,觉得编程是一件很费脑细胞同时很有意思的一件事。
我在编写这次简单计算器的程序过程中遇到很多困难,犯了很多错,(例如:
执行结果部分没有运算符),这也让我意识到编写c语言是需要耐心、细心和热心去做的一件事情!
最关键的是,这个程序是我们经过一个暑假后的过程来编写的,我发现很多知识都忘了,所以最关键的是我觉得编程就该持之以恒!
这次的报告前前后后改了很多遍,我觉得无论是做程序还是报告都应该按照要求的格式来,严谨规范的要求自己才能事半功倍!