C语言简单计算器的编写课程设计Word文件下载.docx

上传人:b****3 文档编号:14351176 上传时间:2022-10-22 格式:DOCX 页数:11 大小:38.77KB
下载 相关 举报
C语言简单计算器的编写课程设计Word文件下载.docx_第1页
第1页 / 共11页
C语言简单计算器的编写课程设计Word文件下载.docx_第2页
第2页 / 共11页
C语言简单计算器的编写课程设计Word文件下载.docx_第3页
第3页 / 共11页
C语言简单计算器的编写课程设计Word文件下载.docx_第4页
第4页 / 共11页
C语言简单计算器的编写课程设计Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C语言简单计算器的编写课程设计Word文件下载.docx

《C语言简单计算器的编写课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言简单计算器的编写课程设计Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

C语言简单计算器的编写课程设计Word文件下载.docx

2概要设计

2.1系统流程图

2.1系统流程图

2.2主要功能表

2.2主要功能表

序号

文件名

主要功能

备注

1

+

加法

两个操作数

2

减法

3

*

乘法

4

/

除法

5

#

开方

一个操作数

6

^

乘方

7

Enter

等于

8

Tab

清零

9

q

退出

3设计过程或程序代码

#include<

stdio.h>

math.h>

malloc.h>

/*malloc的头文件代表在内存中开辟存储空间*/

doublejisuan(chara[])

{

inti=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;

/*定义整型变量i,j,k,m,n,cnt,t1,t2,t3*/

charnibo[50],zhan2[50];

/*定义字符型数组*/

doublex,n,l,z=0,zhan3[50];

/*定义双精度变量x,n,l,z,zhan3[50]*/

typedefstruct/*表示可以用con定义结构体变量*/

doubled1;

intd2;

}dd;

typedefstruct

dddata[50];

inttop;

}zhan1;

zhan1*shu;

/*定义指针变量*/

shu=(zhan1*)malloc(sizeof(zhan1));

shu->

top=0;

while(a[i]!

='

\0'

)/*外循环是用while语句*/

if(a[i]>

0'

&

a[i]<

9'

)/*内循环使用if-else语句*/

z=0;

j=i+1;

while(a[j]>

a[j]<

)/*内循环使用各种循环语句的嵌套*/

{j++;

}

j--;

for(k=i;

k<

=j;

k++)

{

z=z*10+a[k]-'

;

}

j=j+1;

x=z;

if(a[j]=='

.'

l=1;

i=j+1;

n=pow(0.1,l);

l=l+1;

x=x+n*(a[k]-'

);

}

elsei=j;

shu->

data[++shu->

top].d1=x;

data[shu->

top].d2=++cnt;

nibo[++t1]='

+shu->

top].d2;

nibo[t1+1]='

elseif(a[i]=='

('

zhan2[++t2]=a[i];

i++;

)'

j=t2;

while(zhan2[j]!

nibo[++t1]=zhan2[j];

t2=j-1;

+'

)/*对加法的定义*/

while(t2>

0&

zhan2[t2]!

)/*定义当加号和括号同时出现时*/

nibo[++t1]=zhan2[t2];

/*将zhan2[t2]赋给nibo[++t2]*/

t2--;

-'

)/*对减法的定义*/

if(a[i-1]=='

$'

a[0]='

i=0;

elseif(a[i-1]=='

a[i-1]='

a[i-2]='

i=i-2;

else

)/*对括号的定义*/

*'

||a[i]=='

/'

)/*对乘法和除法的定义*/

while(zhan2[t2]=='

||zhan2[t2]=='

^'

#'

)/*逻辑运算*/

)/*逻辑运算中的或运算*/

while(t2>

0)

nibo[++t1]=zhan2[t2];

/*将的zhan2[t2]值赋给nibo[++t1]*/

nibo[t1+1]='

/*碰到'

结束部分程序的运算*/

t2--;

j=1;

t3=0;

while(j<

=t1)

if(nibo[j]>

nibo[j]!

for(i=1;

i<

=shu->

top;

i++)

if((int)(nibo[j]-'

)==shu->

data[i].d2)

m=i;

break;

zhan3[++t3]=shu->

data[m].d1;

elseif(nibo[j]=='

zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];

t3--;

zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];

)/*对乘法的定义*/

zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];

)/*对除法的定义*/

zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];

)/*对乘方的定义*/

zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);

)/*对开方的定义*/

zhan3[t3]=sqrt(zhan3[t3]);

j++;

returnzhan3[t3];

/*返回值*/

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("

a[i+1]='

jieguo=jisuan(a);

\n"

结果为:

%lf"

jieguo);

\n\n\n"

退出请输入q继续请直接输入\n\n"

4设计结果与分析

系统测试结果如下:

根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。

主要是平时看书不仔细、不太注意而产生的,如没有注意具体数据使用是有一定的范围限定;

过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;

在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;

还有漏掉形参的定义是值不能传递等等。

这些语法错误有信息框的提示一般是能够排除的。

另外还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电脑不容易发现。

所以更对程序仔细的检查。

经认真修改之后重新保存文件。

错误原因分析一

缺少变量定义,定义位置不正确

由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到,不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置特别留意。

为减少这样的错误我后来还是用不同的变来名来表示,结果引起的那些错误解决了。

语法错误

大多的语法错误在通过书本参考下能够修改。

主要是平时缺乏锻炼、不太注意而产生的。

如没有注意具体数据使用是有一定的范围限定;

过分重视分号的重要性而在for、if、while语句中画蛇添足加分号。

错误原因分析二

注释的位置

程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。

注释中不能含有C语言可执行的语句。

逻辑错误

编译、连接的成功并不意味着程序的最终成功,逻辑上的错误机器不易检查出来,这时需要多数据结果进行分析。

这种错误的查找是最难的,需要有相当的耐心和细心去把问题找出来,这也是本次程序编辑过程中碰

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

当前位置:首页 > IT计算机

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

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