C语言简单计算器的编写课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013-2014学年第二学期

《高级语言程序设计》

课程设计报告

题目:简单计算器

专业:数字媒体技术

班级:13级1班

姓名:邢洪波

指导教

师:王辉

成绩:

计算机与信息工程系

二0一四年二月二十日

1设计内容及要求

利用本学期所学的《C语言程序设计》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,能够进行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程序。?

在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。在数据输入完成

后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。

运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。程序基本功能要求实现完整,并有简单的验证。程序还须有符合标

准的程序设计报告。

2概要设计

系统流程图

系统流程图主要功能表

主要功能表

3设计过程或程序代码

#include<>

#include<>

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

double jisuan(char a[])

{

int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; /*定义整型变量i,j,k,m,n,cnt,t1,t2,t3*/

char nibo[50],zhan2[50];

/*定义字符型数组*/

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

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

{

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') /*外循环是用while语句*/

{

if(a[i]>='0'&&a[i]<='9') /*内循环使用if-else语句*/

{

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,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];

/*将zhan2[t2]赋给nibo[++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];

相关文档
最新文档