c语言简单计算器的设计说明书Word格式.docx

上传人:b****6 文档编号:19775439 上传时间:2023-01-10 格式:DOCX 页数:14 大小:145.21KB
下载 相关 举报
c语言简单计算器的设计说明书Word格式.docx_第1页
第1页 / 共14页
c语言简单计算器的设计说明书Word格式.docx_第2页
第2页 / 共14页
c语言简单计算器的设计说明书Word格式.docx_第3页
第3页 / 共14页
c语言简单计算器的设计说明书Word格式.docx_第4页
第4页 / 共14页
c语言简单计算器的设计说明书Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c语言简单计算器的设计说明书Word格式.docx

《c语言简单计算器的设计说明书Word格式.docx》由会员分享,可在线阅读,更多相关《c语言简单计算器的设计说明书Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

c语言简单计算器的设计说明书Word格式.docx

设计程序代码使其能够:

接受一个字符串,然后由左至右对其进行判断,如若是没有括号的四则运算,则直接计算并输出其值;

若是带有括号,则对其括号进行判断,划分,并得出运算优先级,进行先后计算,最终得出其值。

3模块划分

程序主要由voidSplitK(char*str);

、voidSplitPrem(char*str);

、voidCombine(floatf1,charOperate,floatf2);

、voidStringBracket(char*str);

四个函数模块组成。

分别实现:

字符判断,优先级判断,运算实现等的功能。

4主要函数说明及其N-S图

图4.2简易计算器的流程图

5程序运行数据及其结果

图5.1加法运算1+1=2

图5.2减法运算1-1=0

图5.3组合运算1:

(1+3)*2=8

图5.4组合运算2:

(12-2)/3=3.33

6课程设计心得

这次“简单计算器制作”的课程设计不仅让我对C语言的熟悉程度上升到了另一个高度。

它是我在编程路途上的一次小的跳跃。

而且在处理非常规数据类型的运算的锻炼下,使我对编程语言有了一个新的认识。

当看着一个具有界面的计算器的模型成品出现在自己面前时,心中有着无限感慨,原来编程也不是非常遥不可及的,原来在编程的趣味性中能让我学到更多有意思的知识。

通过这次课程设计,我也发现了自己的好多不足之处,首先自己在指法上还不行,经常按错字母,通过学习也有所改进;

再有对C语言的一些标准函数不太了解,还有对函数调用的正确使用不够熟悉,对代码中经常出现的错误也不是很了解,通过实践,是我在这些方面的认识有所提高。

并且,这次实践的成功也是我对c语言编程的兴趣得到了提升,让我决定我在以后的学习中也要经常拿c来编一些自己喜欢的小程序,甚至小游戏。

附录:

源代码:

#include<

stdlib.h>

math.h>

conio.h>

stdio.h>

string.h>

voidSplitK(char*str);

voidSplitPrem(char*str);

voidCombine(floatf1,charOperate,floatf2);

voidStringBracket(char*str);

//函数申明

charstr1[100],str2[100],str3[100],sub_str1[100],sub_str2[100],sub_str3[20];

charsub_str31[20],sub_str32[20],str_4[100],operate;

intpause=0,left=0,k1,k2,k3;

floatf1=0.0,f2=0.0,f=0.0;

//变量定义

voidmain()

{

printf("

====================欢迎使用我的简易计算器======================\n"

);

****************************************************************\n"

使用方法:

请从键盘上直接输入表达式,以回车键结束.如45*(12-2)[回车]\n"

*****************************************************************\n\n"

请输入要计算的式子:

\n"

scanf("

%s"

&

str1);

SplitK(str1);

floattemp;

temp=atof(str1);

计算结果为%.2f\n"

temp);

}//主函数

voidSplitK(char*str)

{

inti,j,k,l,jk;

left=0;

while(*str){

if(*str=='

('

)left++;

str++;

}

str2[0]='

\0'

;

str3[0]='

if(left>

0)

{

StringBracket(str1);

j=strlen(str1);

for(i=0;

i<

j;

i++)

if(str1[i]=='

jk=0;

for(k=i;

k<

k++)

if(str1[k]=='

)'

)break;

for(l=i+1;

l<

k-1;

l++)

if(str1[l]=='

){jk++;

break;

}

if(jk==0)

for(l=0;

i;

l++)str2[l]=str1[l];

str2[i]='

for(l=k+1;

l++)str3[l-k-1]=str1[l];

str3[j-k-1]='

for(l=i+1;

=k-1;

l++)str1[l-i-1]=str1[l];

str1[k-i-1]='

break;

}//第一个函数

SplitPrem(str1);

voidSplitPrem(char*str)

inti,j,k,l;

f1=0.0;

f2=0.0;

pause=0;

strcpy(str1,str);

for(i=1;

j-1;

if((str1[i]=='

*'

||str1[i]=='

/'

))

strcpy(sub_str1,"

"

strcpy(sub_str2,"

strcpy(sub_str3,"

strcpy(sub_str31,"

strcpy(sub_str32,"

operate=str1[i];

for(k1=i-2;

k1>

=0;

k1--)

if((str1[k1]=='

||str1[k1]=='

+'

-'

{

for(l=0;

=k1;

l++)sub_str1[l]=str1[l];

sub_str1[k1+1]='

break;

}

for(k2=i+2;

k2<

k2++)

if((str1[k2]=='

||str1[k2]=='

for(l=k2;

l++)sub_str2[l-k2]=str1[l];

sub_str2[j-k2]='

if(k1<

0)k1=-1;

for(l=k1+1;

l++)sub_str31[l-k1-1]=str1[l];

sub_str31[i-k1-1]='

if(k2>

j)k2=j;

for(l=i+1;

k2;

l++)sub_str32[l-i-1]=str1[l];

sub_str32[k2-i-1]='

f1=atof(sub_str31);

f2=atof(sub_str32);

Combine(f1,operate,f2);

if(pause==1)break;

sub_str1[0]='

k3=0;

k3=1;

sub_str2[j-k2]='

for(l=0;

l++)sub_str31[l]=str1[l];

sub_str31[i]='

if(k3==0)k2=j;

sub_str32[k2-i-1]='

strcpy(str_4,str2);

strcat(str_4,str1);

strcat(str_4,str3);

strcpy(str1,str_4);

SplitK(str1);

k=1;

if(str1[0]=='

k=0;

for(l=1;

if((str1[l]=='

||str1[l]=='

if(k==0)break;

if(k==1)

SplitPrem(str1);

}//第二个函数

voidCombine(floatf1,charOperate,floatf2)

f=0.0;

switch(Operate){

case'

:

f=f1+f2;

f=f1-f2;

f=f1*f2;

if(f2!

=0)

f=f1/f2;

sprintf(sub_str3,"

%5.3f"

f);

strcpy(str1,sub_str1);

strcat(str1,sub_str3);

strcat(str1,sub_str2);

pause=1;

}//第三个函数

voidStringBracket(char*str)

{inti,j,len;

len=strlen(str);

j=0;

for(i=0;

len;

if(str[i]!

='

'

{str[j]=str[i];

j=j+1;

str[j]='

if(j>

0&

&

str[j-1]=='

.'

{str[j-1]='

j=j-1;

}//第四个函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1