基于c语言的简易计算器的设计与实现

课程名称:C语言程序设计

课题名称:简易计算器

班级:

学号:

姓名:

指导老师:

成绩:

一、课程设计目的

1.通过这次的课程设计,巩固以前所学的知识:

1)进一步熟悉了各种语句,如宏定义语句,语句的嵌套等等。

2)对顺序,选择,循环结构的综合运用.

3)进一步巩固了一些算法,如求四则混合运算,三角函数,指对数的算法.

2.在课程设计的过程中,拓展了自己的知识面,知道我们所学过的C语言知识不过是很少的一部分。还

有很多知识等待我们自己去学习。

3.为了完善自己的程序,通过上网,查阅图书等途径学到了一些新的知识,如对C语言中一些常用图

形函数的应用。

4.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的

模块化结构。

5.通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。

二、设计内容

我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:

1.查询当时时间

2.简单的四则混合运算(支持小括号、优先级)

3.正弦、余弦函数计算

4.指对数计算

三、总体设计

简单计算器由六大模块组成,模块调用图如下:

1.主函数 void main()

功能:调用各个主要模块,实现简单计算器的整体功能。

2.主界面函数void ZhuJieMian()

功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.时钟函数 int Time()

功能:在模拟的可视化计算器中显示当时的时间。

4.四则混合运算函数void SiZeHunHeYunSuan()

功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

5.三角运算函数void SanJiaoYunSuan()

功能:实现基本的三角函数运算:sin(x)和cos(x)。

6.指对数函数void ZhiDuiShuYunSuan()

功能:实现基本的指数和对数运算。

四、详细设计

a)数据结构设计:

int priority(char left,char right)

{char option[]={’+’,'—’,’*’,'/','(’,')',’=’};

int i,le,ri;

int l[]={4,4,6,6,2,10,0};

int r[]={3,3,5,5,9,3,0};

for(i=0;i〈=7;i++)

{if(option[i]==left) le=l[i];

if(option[i]==right) ri=r[i];

return(ri—le);

}

用两个数组模拟数据结构栈,其特点是数据先进后出。用两个数组分别保存操作数和运算符.从字符串中依次分离出操作数与运算符,分别存入对应数组。当操作符串为空时,直接存入(相当与栈元素的压入)。当不为空时,与数组最后一个元素(相当于栈顶)比较优先级,若大于直接存入,否则弹出操作数最后两位进行运算,直到操作符栈顶元素优先级小于当前运算符,并将其存入。

b)模块接口设计:

1.时钟函数:int Time()

包括的子函数的函数原型:void TimeJieMian();用于制作界面

2.四则混合运算:void SiZeHunHeYunSuan()

包括的子函数的函数原型:

void SiZehunheYunSuanJieMian();用于制作界面

char * readstr (); 将输入的连续单个字符整合成一个完整的串,并返回其首地址 double yunsuan (double shu1,double shu2,char option); 对shu1和shu2的简单加减乘除

运算,并返回运算结果

Int priority (char left,char right ); 判断左符、右符的优先级谁高,若右大于左,返回正

值,否则返回负值

double compute(char *p ); 传入表达式串的首地址,返回表达式之值

3。三角运算:void SanJiaoYunSuan () 包括的子函数的函数原型:

void SanJiaoJieMian (); 用于制作界面。

double hudu (double x

); 把接受到的实数转化为弧度返回. double to_double (char *p); 将字符串转化为实数.

double read (); 将连续输入的字符整合成一个浮点数并在屏幕上逆向输出将

其返回.

double sin(double x ); 求sinx,实数型参数,返回实数型值。 double cos(double x); 求cosx ,实数型参数,返回实数型值。

4.指对数运算:void ZhiDuiShuYunSuan()

包括的子函数的函数原型:

void ZhiDuiShuJieMian(); 用于制作界面。

double read();将连续输入的字符整合成一个浮点数

在屏幕上逆向输出将其返回。

double exp(double x); 求e的x次方,返回双精度实数值。 double lnx(double x); 求lnx的值,返回双精度实数值。

c)流程图:

1.主函数的流程图:

c=1 c=2 c=3 c=4 2.优先级:

y no

3.正弦函数:

4.ln函数:

yes

no

五、调试与测试

遇到的问题:

1。计算器的界面不会做,有时数字显示在边框外面.

2.时钟显示不出来。

3。编写ln函数遇到困难。

采取的解决措施:

1.去图书馆借相关图书,上网查资料,通过自己的阅读,研究,不断的尝试,运行,修改,最终做出了简单的界面,但仍存在很多不足的地方,只能模拟出大体的外观,没能模拟出计算器中的各个键。

2.查在界面显示的函数原型,对比自己的程序,不断修改,对比,调试,检查,反思,最后发现是语句顺序错误,显示写在了判断的后面,修改成功。

3。在编写ln函数的时候,遇到很大困难,最后通过查阅资料,向别人请教编写出了函数。

界面截图及相关说明:

主界面:

按1:进入时钟界面按2:进入四则混合运算界面按3:进入三角函数运算界面按4:进入指对数运算界面按5:退出程序

时钟界面截图:

先按一下s键,并输入表达式之后的四则混合运算界面截图:

运算结果截图:

先按一下s键,并输入数字的三角函数界面截图:

运算结果截图:

先按一下e键,并输入数字的指对数运算界面截图:

运算结果截图:

按空格键,再按l键,并输入数字的指对数运算界面截图:

结果界面截图:

#include

#include 〈dos。h〉

#include 〈stdio.h>

#include

#include

#include〈conio.h〉

#define QINGLING setfillstyle(1 ,15);bar(195,80,445,130);outtextxy(435,120,"0”)

#define SHUCHU setfillstyle(1,15);bar(195,80,445,130);setcolor(0);outtextxy(220,120,ch) #define JIEMIAN setfillstyle(1,7); bar(165,40,475,400); /*底板*/ setfillstyle(1,15); bar(195,80,445,130); /*工作区*/

#define PI 3.1415926

double hudu(double x); /*把输入的数转化为弧度*/

void ZhuJieMian();

void TimeJieMian();

void SiZehunheYunSuanJieMian();

void SanJiaoJieMian();

void ZhiDuiShuJieMian();

double to_double(char *p);

double read(); /*将读到的数字整和成实数*/

double sin(double x);

double cos(double x);

double exp(double x); /*e的次方*/

float lnx(float x);

char* readstr();

double yunsuan(double shu1,double shu2,char option);int priority(char left,char right) ;

double compute(char *p);

int Time();

void SiZehunheYunSuan();

double sqrt(double x);

void SanJiaoYunSuan();

void ZhiDuiShuYunSuan();

void main()

{char c;

ZhuJieMian();

c=getch();

while(c!=’5’)

{switch(c)

{case '1’:Time();break;

case '2’:SiZehunheYunSuan();break;

case ’3’:SanJiaoYunSuan();break;

case ’4':ZhiDuiShuYunSuan();break;

}

ZhuJieMian();

c=getch();

}

}

double hudu(double x)

{return( x*PI/180.0);

void ZhuJieMian()

{int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"”);

JIEMIAN;

outtextxy(200,160,”Welcome To Use This Caculator:”); outtextxy(200,170,”Its functions is as follows:”); outtextxy(200,210,"1 Current Time”);

outtextxy(200,230,”2 Sizehunheyunsuan");

outtextxy(200,250,”3 Sanjiaoyunsuan");

outtextxy(200,270,"4 Zhiduishuyunsuan");

outtextxy(200,290,"5 Quit");

outtextxy(200,310,"Please choose an order: ”);

}

void TimeJieMian()

{int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,”");

JIEMIAN;

outtextxy(200,200,"q represent Quit");

void SiZehunheYunSuanJieMian()

{int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,”");

setfillstyle(1,LIGHTGRAY);

JIEMIAN;

outtextxy(200,160,”Please input expressions ");

outtextxy(200,215," s start");

outtextxy(200,240," spase to_zero");

outtextxy(200,265," q quit");

outtextxy(200,310,”Please choose an order ");}

void SanJiaoJieMian()

{int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"”);

setfillstyle(1,LIGHTGRAY);

JIEMIAN;

outtextxy(200,160,"Please choose an order and then "); outtextxy(200,170,"input datas:");

outtextxy(200,210,” s sinx”);

outtextxy(200,230,” c cosx");

outtextxy(200,250,”spase to_zero");

outtextxy(200,270,” q quit”);

outtextxy(200,310,"Please choose an order: ");

void ZhiDuiShuJieMian()

{int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"”);

JIEMIAN;

outtextxy(200,160,”Please choose an order and then "); outtextxy(200,170,"input datas:”);

outtextxy(200,210," e exp(x)”);

outtextxy(200,230,” l ln(x)”);

outtextxy(200,250,”spase to_zero”);

outtextxy(200,270," q quit”);

outtextxy(200,310,”Please choose an order: ");

}

double to_double(char *p)

{int i,sign=1;

float t;

double num;

i=0;

if(p[i]=='—') {sign=—1;i++;}

num=0.0;

for(;p[i]〈='9’&&p[i]>='0’;i++)

num=num*10。0+p[i]-'0';

if(p[i]=='.’)

for(i++,t=10.0;p[i]〉=’0'&&p[i]<=’9';i++)

{num+=(p[i]-'0')/t;

t*=10;}

return(sign*num);

}

double read() /*将读到的数字整和成实数*/

{char c,a[81],ch[34]; /*将读到的串先保存在a中*/

int i=0;

c=getch();

while(c!=’\r’) /*getch()只读取回车键的第一个回车符*/

{a[i++]=c;a[i]=’\0';

setfillstyle(1,WHITE);

bar(195,80,445,130);

sprintf(ch,"%28s",a);

setcolor(BLACK);

outtextxy(220,120,ch); /*不断刷系刷新屏幕以显现出逆向输出*/ c=getch();

return(to_double(a));

double sin(double x)

{double fz,fm,sinx=x,xiang;

int sign=—1,t;

xiang=x,fz=x,fm=1,t=1;

while(fabs(xiang)>1e-8)

{fz*=x*x;

fm*=(t+1)*(t+2); t+=2;

xiang=sign*(fz/fm);

sinx+=xiang;

sign=sign*(-1);

}

return(sinx);

}

double cos(double x)

{double fz,fm,cosx=1,xiang;

int sign=-1,t;

xiang=x,fz=1,fm=1,t=0;

while(fabs(xiang)〉1e-8)

{fz*=x*x;

fm*=(t+1)*(t+2); t+=2;

xiang=sign*(fz/fm);

cosx+=xiang;

sign=sign*(—1);

return(cosx);

double exp(double x) /*e的次方*/

{double s=1.0,xiang=1.0;

int t=1;

do{

xiang*=x/(t++);

s+=xiang;}

while(fabs(xiang)>1e-6);

return(s);}

float lnx(float x) /*ln(x)*/ { int s=—1,n=0;

float y=0,t=0,m=1;

if(x>0 && x<=1)

{ do

{ y+=t;

n++;

s=—s;

m*=(x-1);

t=m*s/n;

}while(fabs(t)>1e-6);

}

if(x〉1)

{x=1/x;

do

{ y+=t;

n++;

s=—s;

m*=(x—1);

t=m*s/n;

}while(fabs(t)>1e-6);

return 0—y;

}

char* readstr()

{char c,a[81],ch[34]; /*将读到的串先保存在a中*/

int i=0;

c=getch();

while(c!='\r') /*getch()只读取回车键的第一个回车符*/{a[i++]=c;a[i]=’=';a[i+1]='\0’;

setfillstyle(1,WHITE);

bar(195,80,445,130);

sprintf(ch,"%28s",a);

setcolor(BLACK);

outtextxy(220,120,ch);

c=getch();

return(a);

double yunsuan(double shu1,double shu2,char option)

{ double re=0;

switch(option)

{case ’+’:re=shu1+shu2;break;

case '-’:re=shu1—shu2;break;

case ’*':re=shu1*shu2;break;

case ’/':re=shu1/shu2;break;

return re;

}

int priority(char left,char right)

{char option[]={'+',’—’,’*’,’/’,'(’,')',’='}; int i,le,ri;

int l[]={4,4,6,6,2,10,0};

c语言课程设计-简易计算器

C语言课程设计学院:地球物理与测控技术学院专业:测控技术与仪器 姓名:邬博文 学号:201620120202

目录 第一章选题的意义 (3) 1.1 课题研究的背景 (3) 1.2 自己设计的优势 (3) 1.3 设计上功能上的不足 (3) 第二章研究的基础 (4) 2.1 涉及的主要知识点 (4) 第三章研究的可行性 (5) 3.1 技术的可行性 (5) 3.2 经济效益和社会效益的可行性 (5) 第四章研究的具体部分 (6) 4.1 研究的主要流程图 (6) 4.2 研究的具体代码 (7) 4.3程序运行结果图表 (13) 第五章总结 (16)

第一章选题的意义 ①通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性! ②通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 1.1 课题研究的背景 计算器是现代日常生活中使用较为频繁的工具之一,常用的计算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受! 1.2 自己设计的优势 现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行加、减、乘、除运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出。 1.3 设计上功能上的不足 本程序虽然在其他简易计算器的基础上新增加了很多类容,如:三角函数的求值、指数函数的计算、任意数的任意次方、进制之间的相互转换等;但是由于个人能力的限制,仍不能实现四则混合运算的功能,仅仅是能进行一个两个数或者一个数的计算,这是这个程序最为不足的地方。但是我相信,随着学习的不断深入,这个功能在不久以后会被很好的实现。

C语言程序设计之简单计算器

攀枝花学院 学生课程设计(论文) 题目:简易计算器 学生姓名:葛肪瑜学号:201010801018 所在院(系):计算机学院 专业:计算机科学与技术 班级:10计本(1)班 指导教师:陈三清职称:讲师 2011年6月25日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 题目计算器的设计 1、课程设计的目的 本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 一、用C实现如下功能: 使用C语言编写一个类似于Windows附件提供的计算器软件,实现计算器的基本功能,能进行浮点数的加、减、乘、除、乘方和求模运算。 二、撰写课程设计报告或课程设计总结课程设计报告要求:总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 3、主要参考文献 [1] 潭浩强,《C程序设计》,清华大学出版社 [2] 王声决,《C语言程序设计》,中国铁道出版社 [3] 潭浩强,《C程序设计题解与上机指导》,清华大学出版社 [4] 刘玲等,《C语言程序设计应用教程》,西南师范大学出版社 4、课程设计工作进度计划 第1天完成方案设计与程序框图 第2、3天编写程序代码 第4天程序调试分析和结果 第5天课程设计报告和总结 指导教师(签字)日期年月日 教研室意见: 年月日 学生(签字): 接受任务时间:年月日注:任务书由指导教师填写。

C语言编程-简单的计算器

苏州市职业大学课程设计说明书名称《计算机语言C课程设计》 设计一个简单计算器 2011年6月20日至2011年6月25日共一周 院系计算机工程系 班级 姓名 系主任 教研室主任 指导教任

目录 一、题目说明 (2) 二、总体设计 (2) 2.1.系统开发平台 (2) 2.2.系统流程图 (2) 三、详细说明 (3) 四、遇到的问题和解决方法 (11) 五、课程设计总结 (12) 六、参考文献 (12)

一、题目说明 在功能上尽量模拟windows操作系统中的计算器,系统界面不做强制要求。 程序开发背景 传统的计算方法有口算、笔算还有就是借助工具。但是一旦碰到计算量稍大的计算式子,口算和笔算往往就不能发挥出优势,一般都回借助工具。而传统的计算器也并不方便随身携带。随着科技的发展,计算机已经逐渐普及,人们的生活中、工作中往往都离不开计算机。如果碰到大量的计算,还要去找计算器,这样似乎太过麻烦。所以,在计算机中进行计算器的工作,就会方便得多。因此,本次设计了在计算机操作系统中的计算器。 二、总体设计 2.1.系统开发平台 系统使用的是Microsoft VC++ 6.0软件平台。 2.2.系统流程图

图1系统流程图 三、详细说明 本系统分为两个部分:double jisuan()部分,main()主函数部分。 double jisuan部分首先对程序进行基础设置,以达到能够对输入的表达式进行判断。main()主函数模块,首先通过printf()语句对一些特殊符号进行解释,然后通过用户自己讲要计算的式子输入程序,来得出结果

1.double jisuan()函数 规定对优先级别,其过程为: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; } 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++; }

基于c语言的简易计算器的设计与实现

课程名称:C语言程序设计 课题名称:简易计算器 班级: 学号: 姓名: 指导老师: 成绩: 一、课程设计目的 1.通过这次的课程设计,巩固以前所学的知识:

1)进一步熟悉了各种语句,如宏定义语句,语句的嵌套等等。 2)对顺序,选择,循环结构的综合运用. 3)进一步巩固了一些算法,如求四则混合运算,三角函数,指对数的算法. 2.在课程设计的过程中,拓展了自己的知识面,知道我们所学过的C语言知识不过是很少的一部分。还 有很多知识等待我们自己去学习。 3.为了完善自己的程序,通过上网,查阅图书等途径学到了一些新的知识,如对C语言中一些常用图 形函数的应用。 4.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的 模块化结构。 5.通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。 二、设计内容 我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能: 1.查询当时时间 2.简单的四则混合运算(支持小括号、优先级) 3.正弦、余弦函数计算 4.指对数计算 三、总体设计 简单计算器由六大模块组成,模块调用图如下: 1.主函数 void main() 功能:调用各个主要模块,实现简单计算器的整体功能。 2.主界面函数void ZhuJieMian() 功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.时钟函数 int Time() 功能:在模拟的可视化计算器中显示当时的时间。 4.四则混合运算函数void SiZeHunHeYunSuan() 功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。 5.三角运算函数void SanJiaoYunSuan() 功能:实现基本的三角函数运算:sin(x)和cos(x)。 6.指对数函数void ZhiDuiShuYunSuan() 功能:实现基本的指数和对数运算。 四、详细设计 a)数据结构设计: int priority(char left,char right) {char option[]={’+’,'—’,’*’,'/','(’,')',’=’}; int i,le,ri; int l[]={4,4,6,6,2,10,0}; int r[]={3,3,5,5,9,3,0}; for(i=0;i〈=7;i++) {if(option[i]==left) le=l[i]; if(option[i]==right) ri=r[i]; } return(ri—le); } 用两个数组模拟数据结构栈,其特点是数据先进后出。用两个数组分别保存操作数和运算符.从字符串中依次分离出操作数与运算符,分别存入对应数组。当操作符串为空时,直接存入(相当与栈元素的压入)。当不为空时,与数组最后一个元素(相当于栈顶)比较优先级,若大于直接存入,否则弹出操作数最后两位进行运算,直到操作符栈顶元素优先级小于当前运算符,并将其存入。 b)模块接口设计: 1.时钟函数:int Time() 包括的子函数的函数原型:void TimeJieMian();用于制作界面 2.四则混合运算:void SiZeHunHeYunSuan() 包括的子函数的函数原型: void SiZehunheYunSuanJieMian();用于制作界面

C语言制作简单计算器

C语言制作简单计算器 一、项目介绍 我们要用c语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的所有数学知识都很简单,但输入过程会增加复杂性。我们需要检查输入,确保用户没有要求计算机完成不可能的任务。还必须允许用户一次输入一个计算式,例如:32.4+32 或者9*3.2 项目效果图 编写这个程序的步骤如下: ∙获得用户要求计算机执行计算所需的输入。 ∙检查输入,确保输入可以理解。 ∙执行计算。 ∙显示结果。 三、解决方案 1.步骤1

获得用户输入是很简单的,可以使用printf()和scanf()。下面是读取用户输入的程序代码: #includeint main(){ double number1=0.0; //定义第一个操作值 double number2=0.0; //定义第二个操作值 char operation=0; //operation必须是'+''-''*''/'或'%' printf("\nEnter the calculation\n"); scanf("%lf%c%lf",&number1,&operation,&number2); return0; } 2.步骤2 接着,检查输入是否正确。最明显的检查是要执行的操作是否有效。有效的操作有+、-、*、/和%,所以需要检查输入的操作是否是其中的一个。 还需要检查第二个数字,如果操作是/或者%,第二个数字就不能是0。如果右操作数是0,这些操作就是无效的。这些操作都可以用if语句来完成,switch语句则为此提供了一种更好的方式,因此它比一系列if语句更容易理解。 switch(operation) { case'+': printf("=%lf\n",number1+number2); break; case'-': printf("=%lf\n",number1-number2); break; case'*': printf("=%lf\n",number1*number2); break; case'/': if(number2==0) printf("\n\n\aDavision by zero error!\n"); else printf("=%lf\n",number1/number2); break;

简单计算器的设计与实现

C/C++程序设计课程设计设计说明书 简单计算器的设计与实现 学生姓名 学号 班级 成绩 指导老师 计算机科学与技术系 2010年11月22日

C/C++程序设计课程设计评阅书

课程设计任务书 2010—2011学年第一学期 专业:计算机科学与技术学号:姓名: 课程设计名称: C/C++程序设计课程设计 设计题目:简单计算器的设计与实现 完成期限:自2010 年 11月 15 日至 2010 年 11 月 26 日共2 周 设计内容及要求: 要求用C/C++语言设计一个简易的计算器程序,对输入的数据进行加、减、乘、除、开平方等操作。 设计要求及功能如下: 1.阐述设计思想,画出流程图; 2.实现功能: (1)对输入的数据进行加法运算; (2)对输入的数据进行减法运算; (3)对输入的数据进行乘法运算; (4)对输入的数据进行除法运算; (5)对输入的数据进行开平方根运算。 最终设计成果形式为: 1.编写好的程序; 2.撰写课程设计说明书一份,打印并装订成册。 指导教师(签字):教研室主任(签字): 批准日期:年月日

摘要 设计了一个简单的计算器程序,该计算器具有简单的四则混合运算以及复杂的数学表达式的功能。该计算器采用VC++作为软件开发环境,采用算数表达式处理算法来实现加、减。乘、除四则混合运算。操作简单,界面清晰,易于用户使用,容易被他们所接受的。 关键词:计算器;VC++;数学表达式

目录 1课题描述 (1) 2问题分析和任务制定 (2) 3详细设计 (3) 3.1头文件设计 (3) 3.2简单计算器的设计与实现函数设计 (3) 4 程序调试与测试 (8) 4.1主界面测试 (8) 4.2基本功能的测试 (8) 5结果分析 (12) 总结 (13) 参考文献 (14)

基于c语言的计算器的设计与实现

基于c语言的计算器的设计与实现 基于C语言的计算器的设计与实现 计算器是我们日常生活中经常使用的工具,它可以帮助我们进行各种数学运算,如加减乘除、开方、求幂等。在计算器的设计与实现中,C语言是一种非常常用的编程语言,因为它具有高效、灵活、可移植等优点。下面我们来介绍一下基于C语言的计算器的设计与实现。 1. 设计思路 在设计计算器时,我们需要考虑以下几个方面: (1)用户界面设计:计算器的用户界面应该简洁明了,易于操作。一般来说,我们可以采用命令行界面或图形界面的方式来实现。(2)输入输出处理:计算器需要能够接收用户输入的数值和运算符,并输出计算结果。在处理输入输出时,我们需要考虑到输入的合法性和输出的格式。 (3)运算处理:计算器需要能够进行各种数学运算,如加减乘除、开方、求幂等。在进行运算时,我们需要考虑到运算的优先级和运算的精度。 2. 实现步骤

在实现计算器时,我们可以按照以下步骤进行: (1)设计用户界面:根据需求,设计计算器的用户界面,包括输入框、输出框、数字键、运算符键等。 (2)处理输入输出:在输入框中接收用户输入的数值和运算符,并进行合法性检查。在输出框中输出计算结果,并进行格式化处理。(3)实现运算处理:根据用户输入的运算符,进行相应的数学运算。在进行运算时,需要考虑到运算的优先级和运算的精度。 (4)测试和调试:在实现计算器后,需要进行测试和调试,确保计算器的功能正常。 3. 实例代码 下面是一个简单的基于C语言的计算器的实例代码: #include #include #include int main() { double num1, num2, result; char op;

c语言简易计算器报告

C语言简易计算器报告 介绍 本文将介绍如何使用C语言编写一个简易的计算器。计算器可以进行基本的四则运算,包括加法、减法、乘法和除法。 设计思路 1.首先,我们需要定义计算器的操作符和操作数。操作符可以是+, -, *, /,操作数是两个整数或浮点数。 2.接下来,我们需要编写一个函数来接收用户输入的操作符和操作数, 并进行相应的计算。我们可以将这个函数命名为calculate。 3.在calculate函数中,我们根据用户输入的操作符,执行相应的计 算操作,并返回计算结果。如果用户输入的操作符不合法,我们将返回一个错误提示。 4.最后,我们在主函数中调用calculate函数,并显示计算结果。 代码实现 下面是实现一个简易计算器的C语言代码: #include float calculate(char operator, float operand1, float operand2) { float result; switch (operator) { case'+': result = operand1 + operand2; break; case'-': result = operand1 - operand2; break; case'*': result = operand1 * operand2; break; case'/': if (operand2 != 0) { result = operand1 / operand2; } else { printf("错误:除数不能为0\n"); return-1; // 返回错误代码 } break;

C语言程序设计之简单计算器

C语言程序设计之简单计算器 C语言是一种广泛应用于操作系统、嵌入式系统和各种应用程序的高级程序设计语言。在学习C语言的过程中,我们可以通过编写简单的计算器程序来巩固所学的知识。 计算器程序的基本功能是接收用户输入的两个数字和一个运算符,然后根据用户的选择进行相应的运算,最后输出结果。下面是一个简单的计算器程序的实现。 首先,我们需要包含头文件stdio.h和stdlib.h,以便使用标准输入输出函数和动态内存分配函数。 #include #include 接下来,我们定义一个函数menu,用于显示计算器的菜单选项。用户可以选择进行加法、减法、乘法或除法运算,或者退出程序。 void men printf("====================================\n"); printf("简单计算器\n"); printf("1. 加法\n"); printf("2. 减法\n"); printf("3. 乘法\n"); printf("4. 除法\n");

printf("5. 退出程序\n"); printf("====================================\n"); printf("请选择您要进行的运算:"); 然后,我们定义一个函数add,用于执行加法运算。该函数接收两个参数:num1和num2,分别表示用户输入的两个数字。 float add(float num1, float num2) return num1 + num2; 类似地,我们可以定义函数sub、mul和div,用于执行减法、乘法和除法运算。 float sub(float num1, float num2) return num1 - num2; float mul(float num1, float num2) return num1 * num2; float div(float num1, float num2) if (num2 != 0) return num1 / num2; } else printf("错误:除数不能为0!\n"); return 0;

C语言简易计算器的实现

C语言简易计算器的实现 计算器是一个常见的应用程序,用于执行数学运算。在C语言中,可以通过使用条件判断、循环和函数来实现一个简易计算器。下面是一个实现四则运算的简易计算器的示例代码: ```c #include float add(float a, float b) return a + b; float subtract(float a, float b) return a - b; float multiply(float a, float b) return a * b; float divide(float a, float b) return a / b; int mai float num1, num2; char operator; printf("请输入两个数:"); scanf("%f %f", &num1, &num2);

printf("请输入操作符:"); scanf(" %c", &operator); // 注意空格,以防止读取上一个输入时的换行符 float result; switch (operator) case '+': result = add(num1, num2); printf("结果为:%.2f\n", result); break; case '-': result = subtract(num1, num2); printf("结果为:%.2f\n", result); break; case '*': result = multiply(num1, num2); printf("结果为:%.2f\n", result); break; case '/': if (num2 == 0)

C语言简易计算器的实现

C语言简易计算器的实现 C语言简易计算器是一种用于进行基本数学运算的程序。实现一个简易计算器的关键是要能够解析用户输入的数学表达式,并将其转化为计算机可以理解的形式,然后进行计算,并输出结果。下面是一个大约1200字以上的示例实现。 ```c #include #include #include #include #define MAX_SIZE 100 //定义操作符的优先级 int getPriority(char op) if (op == '+' , op == '-') return 1; else if (op == '*' , op == '/') return 2; else return 0;

//进行四则运算 int calculate(int a, int b, char op) switch (op) case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': return a / b; default: return 0; } //将中缀表达式转换为后缀表达式 void infixToPostfix(char* infixExp, char* postfixExp) char stack[MAX_SIZE]; int top = -1; int j = 0; for (int i = 0; infixExp[i] != '\0'; i++) if (isdigit(infixExp[i])) { // 数字直接输出到后缀表达式while (isdigit(infixExp[i])) postfixExp[j++] = infixExp[i++]; }

C语言编写一个科学计算器

C语言编写一个科学计算器 科学计算器是一种功能强大的工具,可以进行各种复杂的科学计算。下面是一个使用C语言编写的科学计算器的示例代码,用于演示其基本功能。 ```c #include #include void mainMen printf("------------------------\n"); printf(" 科学计算器 \n"); printf("------------------------\n"); printf("1. 四则运算\n"); printf("2. 求平方根\n"); printf("3. 求立方根\n"); printf("4. 求幂次方\n"); printf("5. 求对数\n"); printf("6. 退出\n"); void arithmeticOperation float num1, num2;

printf("请输入两个操作数:\n"); scanf("%f %f", &num1, &num2); printf("1. 加法结果:%f\n", num1 + num2); printf("2. 减法结果:%f\n", num1 - num2); printf("3. 乘法结果:%f\n", num1 * num2); if (num2 != 0) printf("4. 除法结果:%f\n", num1 / num2); } else printf("操作数2不能为0!\n"); } void squareRoo float num; printf("请输入一个数字:\n"); scanf("%f", &num); printf("平方根:%f\n", sqrt(num)); void cubeRoo float num; printf("请输入一个数字:\n"); scanf("%f", &num);

C语言课程设计简单计算器程序

课程设计名称:C 语言课程设计 课程设计题目:简单计算器程序 目录 第1章需求分析.............................................................. 0 . 设计要求.................................................................. 0 .

任务...................................................................... 0 . 第2章总体设计.............................................................. 1 . 设计简介及设计方案论述..................................................... 1...功能模块层次图............................................................. 1...第3章详细设计.............................................................. 2 . 由(后缀)逆波兰表达式计算中缀表达式原理.................................. 4.. 算法描述................................................................. 5 . 第4章调试分析.............................................................. 7 . 程序设计中所遇到的错误及犯错的原因....................................... 7.. 错误的解决方法........................................................... 7...第5章用户手册.............................................................. 8 . 总结.............................................................................. 1..1 .. 参考文献.............................................................................. 1..2 .. 附录(程序清单).............................................................................. 1..2 .

C语言课程设计报告【简易计算器设计】

C语言课程设计报告【简易计算器设计】1000字 一、设计目的 本设计旨在通过设计一个简易计算器,使初学者通过该计算器,了 解C语言基本语法并且巩固数学运算知识。 二、设计内容 (一)需求分析 本计算器,要求能够完成一般的数学运算(加、减、乘、除),以 及开平方、自然对数、正弦等常用函数的计算。 (二)功能设计 1. 实现加、减、乘、除基本运算符的计算功能,实现数值运算。 2. 实现开平方、自然对数、正弦等常用函数的计算功能。 3. 提供菜单界面,使用户可以选择所需要的计算功能。 4. 能够对输入的数字进行异常处理,如输入非数字字符等。 (三)技术实现 本计算器的实现基于C语言,主要涉及基本输入输出和函数的应用。 1. 输入输出功能:本计算器通过scanf函数实现用户输入,通过printf函数将结果输出。 2. 函数应用:本计算器通过调用数学库函数实现对开平方、自然对数、正弦等常用函数的计算。 (四)算法设计 本计算器的算法主要基于基本的数学运算原理以及数学库函数的应用。 1. 加法运算: \t输入要加的两个数a和b \t输出a+b的结果

2. 减法运算: \t输入要减的两个数a和b \t输出a-b的结果 3. 乘法运算: \t输入要乘的两个数a和b \t输出a*b的结果 4. 除法运算: \t输入要除的两个数a和b \t如果b=0,输出错误信息\t否则,输出a/b的结果 \t5. 开平方: \t输入要开平方的数a \t如果a<0,输出错误信息\t否则,输出a的平方根 \t6. 自然对数: \t输入要求自然对数的数a \t如果a≤0,输出错误信息\t否则,输出a的自然对数\t7. 正弦: \t输入要求正弦的角度a \t输出a的正弦值 (五)程序设计 以下是本计算器的主体代码:

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)

扬州大学 C语言课程设计报告题目一个简易计算器的设计与实现 班级 学号 姓名 指导教师 成绩 老师评语: 第 2 页共 14 页

第 3 页共 14 页

一、系统调试…………………………………………8,9,10,11 二、课程设计体会总结………………………………8,9,10,11 1 课程设计目的 (1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。通过课程设计可以达到综合设计C语言程序的目的。 (2)通过本课程设计,可以培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础! (3)通过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。 2 课程设计内容 目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。(2)三角与反三角运算:如sinx,cosx等。 (3)指数对数运算:如log(x),lnx,e的x次方等。(4)其他运算:如X!,x 的累加等。(4)不允许调用库函数,使用自行开发的程序实现常用函数运算。(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。 使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表 第 4 页共 14 页

c语言课程设计报告++计算器的实现(内含完整报告-流程图-截屏-总结等)

目录 1 前言 (2) 2 需求分析 (2) 2.1要求 (2) 2.2任务 (2) 2.3运行环境 (2) 2.4开发工具 (2) 3 概要设计 (2) 3.1系统流程图 (3) 3.2查询函数流程图 (4) 4 详细设计 (6) 4.1分析和设计 (6) 4.2具体代码实现 (6) 4.3程序运行结果 (14) 5 课程设计总结 (14) 参考文献 (15) 致谢 (15)

1 前言 编写一个程序来实现算术计算器。通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、等运算符号),然后将其信息存入文件中。输入一个算术计算式,就在屏幕上显示结果。 2 需求分析 2.1要求 (1)用C语言实现程序设计; (2)利用结构体、共用体进行相关信息处理; (3)画出查询模块的流程图; (4)系统的各个功能模块要求用函数的形式实现; (5)界面友好(良好的人机互交),程序要有注释。 2.2任务 (1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中; (2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果; (3)画出部分模块的流程图; (4)编写代码; (5)程序分析与调试。 2.3运行环境 (1)WINDOWS2000/XP系统 (2)TurboC2.0编译环境 2.4开发工具 C语言 3 概要设计

3.1系统流程图 如图3.1所示。 w 图3.1 系统流程图

3.2查询函数流程图(1)边界画线函数流程图

(2)图标按钮设置函数流程图

4 详细设计 4.1分析和设计 (1)在程序的开头部分定义了结构体类型,用来存放按钮信息,使数据能够从键盘上输入。用输入函数input()来输入按键放在button[]数组中。再定义结构体栈:struct_stack() 用于数据的输入和存放。 (2)进而定义了表格窗口函数,窗口画线函数draw_win() 和边界线函数draw_border(),定义out_text_win()输出文本窗口,定义window_xy(32,3); 计算结果窗口。通过这些为形成整个界面提供了大的前提。 (3)接着通过“write_char()”,“active_button()”,“write_top()”,“out_text_win()”,“get_key()”,“window_xy()”等一系列的函数,使得计算器的整个外型呈现了出来。再定义了文本光标函数:text_clo()文本光标函数,通过光标移动选定数字并按空格键确定,通过mian()函数来调用各个子函数,最终得到结果。 4.2具体代码实现 源程序代码: #include"dos.h" #include"conio.h" #include"string.h" #include"stdio.h" #define normbut_bor 0x80 #define presbut_but 0xb8 #define normnum_but 0x8e #define presnum_but 0xb9 #define spebut_char 0x2c #define win_color 0xf2 #define win_char 0xfb

c语言程序设计-简单的计算器

C语言程序设计-简单的计算器 (总18页) --本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--

《程序设计基础(C)》课程设计报告 简易计算器设计 学生姓名: 学号: 班级: 指导老师: 日期: 309工作室设计

目录 一、设计目标 (1) 二、总体设计 (2) 三、详细设计 (4) 四、调试与测试 (8) 五、分析及结论 (9) 六、参考文献 (10) 【附录】 (10)

一、设计目标 设计一个C语言程序(简单计算器设计) 具体要求:在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。 主要功能:进行+、-、*、/、三角函数、对数、幂等各项数学运算,能够进行进制间的相互转换与计算。 二、总体设计 1、程序设计组成框图 2、设计思路 简单计算器的设计的程序中主要调用的函数有:数学函数的定义和I/O函数;设计思路和理念在于一切追求简便易操作原理,通过个人的构思和设计以及调试运行设计出这一款简单的计算器。

3、程序设计流程图

三、详细设计 1、功能函数① 函数的功能:两数的+、-、*、/计算、求平均 函数的入口:从main()的if(flag==1)开关结构中进入,即flag的值为1时进入该函数,从而进行该功能函数的计算。 函数调用关系:被主函数调用,由if()开关结构中进入。 函数的出口:函数的出口为printf("是否继续运算(Y/N) :"),此时输入“Y”,继续前面的结构。 2、功能函数② 函数的功能: x的y次方的计算、两数的求余、以x为底y的对数 函数的入口:从main()的if(flag==2)开关结构中进入,即flag的值为2时进入该函数,从而进行该功能函数的计算。 函数调用关系:被主函数调用,由if()开关结构中进入。 函数的出口:函数的出口为printf("是否继续运算(Y/N) :"),此时输入“Y”,继续前面的结构。

简易计算器设计-msp430-C语言

简易计算器

目录 摘要…………………………………………………………………………………P3 关键字………………………………………………………………………………P3 一、设计要求………………………………………………………………………P3 二、方案论证与选择………………………………………………………………P3 2.1 单片机选择………………………………………………………………P3 2.2 LCD显示屏选择…………………………………………………………P3 2.3 键盘选择…………………………………………………………………P4 2.4 CPU工作方式选择………………………………………………………P4 三、系统实现………………………………………………………………………P4 3.1 硬件设计…………………………………………………………………P4 3.1.1系统框图………………………………… …………………………P4 3.1.2 盘的电平设计以与与单片机的连接键……………………………P5 3.2.3单片机与显示器的连接…………………………………………… P5 3.2软件设计……………………………………………………………………P6 四、作品性能测试与分析…………………………………………………………P10 4.1试性能概览………………………………………………………………P10 4.2误差分析…………………………………………………………………P12 五、参考文献………………………………………………………………………P12 六、附录……………………………………………………………………………P13 6.1计算器功能介绍…………………………………………………………P13 6.2仿真电路图………………………………………………………………P13 6.3元件清单…………………………………………………………………P13 6.4原程序代码………………………………………………………………P14

简易计算器设计-msp430-C语言

简易计算器设计-msp430-C语言

简易计算器

出器件有以下几个优点: 1显示质量高 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。 2 数字式接口 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。 3 体积小、重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。 4 功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。 2.3 键盘选择 本设计只需实现+、-、*、/、开根号等基本功能,所以使用4*4的简易键盘即可,对于附加功能,通过简单点的按键复用,即可实现。 2.4 CPU工作方式选择 查询方式:在这种工作方式下,当CPU执行完初始化程序后,便通过不断地查询端口值来判断是否有键按下,若有则跳转去执行相关的键值分析或数值计算及显示程序。执行完毕,继续回到主程序继续不断查询。 中断方式:在此工作方式下,CPU无需查询,在执行完中断程序后,通过一条指令使得单片机进入休眠状态。当有键按下时,则跳转去执行中断程序,执行完毕,继续回到主程序休眠。 本设计选择中断方式。由于本设计为单任务,中断方式的高效性未能体现,但是通过中断方式,我们可以让单片机在空闲的时候进入休眠状态,这样可以极大地减少其消耗。 三、系统实现 3.1硬件设计 3.1.1系统框图 系统的逻辑框图如下图所示。

3.2.2 键盘的电平设计以及与单片机的连接 键盘的每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件,查出该键的功能。 键盘的8个口分别与430单片机的P1和P2口的第四位相连,且P1口输入,P2口输出,二者结合,采用行扫描法确定按键。其与单片机的具体连接方式如 下图所示。 3.2.3单片机与显示器的连接

相关文档
最新文档