c语言简易计算器设计报告

合集下载

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

C语言课程设计报告【简易计算器设计】
附源程序清单:
1Calc.h(运算函数集头文件)
#include<stdio.h>
#include<string>
#include<string.h>
#define HIGH struct high
#define MAXN 5000
#define MAXSHOW 40
#define key_num 0
}
void initNum(HIGH *numb) //初始化
{
int i;
HIGH tmp;
memset(tmp.num, 0, sizeof(tmp.num));
*numb = tmp;
}
int absCmp(HIGH a, HIGH b) //比较绝对值大小
{
int i;
for(i = MAXN - 1; i > 0; i--)
5对于高精度,采用结构体struct high{int num[MAXN];};的形式,数组的一个元素存一位。个位为num[1],将符号存在num[0]之中。
1对于高精度加法,先判断两个数符号,如果为异号,则进行高精度减法,否则将各位逐个相加,然后逐位进位,返回答案即可。
2对于高精度减法,先判断两个数符号,如果为异号,则进行高精度加法,否则用大数减小数,逐个相减,然后逐位退位,判断符号、返回答案即可。
2输入数字,再输入运算符,输入等于号的结果为“当前输入的数字→运算符→当前输入的数字”。可以调节正负号。
3输入“数字,运算符,数字,运算符...数字,运算符”亦可。
七、心得体会
这次“简单计算器制作”的课程设计不仅让我对C语言的熟悉程度上升到了另一个高度,而且在一定意义上对面向对象设计的理解更加深刻了。是我在编程路途上的一次质的飞跃。而且在处理非常规数据类型的运算的锻炼下,使我对编程语言有了一个新的认识。当看着一个具有图形界面的计算器的模型成品出现在自己面前时,心中有着无限感慨,原来编程也不是非常遥不可及的,原来在编程的趣味性中能让我学到更多有意思的知识。

c语言程序设计课程计算器设计报告

c语言程序设计课程计算器设计报告

课程设计实验报告题目 C/C++语言程序设计所在院系信息学院专业计算机科学与技术班级 12级计科班学生指导教师2014年9月24 日程序设计流程图:源代码:#include <stdio.h>#include<math.h> #include <stdlib.h>void fun1(){printf("\t\t\t*****************************\n");printf("\t\t\t$ 欢迎使用计算器 $\n");printf("\t\t\t$ $\n");printf("\t\t\t$ 1.加法 $\n");printf("\t\t\t$ 2.减法 $\n");printf("\t\t\t$ 3.乘法 $\n");printf("\t\t\t$ 4.除法 $\n");printf("\t\t\t$ 5.乘方 $\n");printf("\t\t\t$ 6.开方 $\n");printf("\t\t\t$ 7.八进制转换 $\n");printf("\t\t\t$ 8.十六进制转换 $\n");printf("\t\t\t$ 9.退出 $\n");printf("\t\t\t$ $\n");printf("\t\t\t*****************************\n");}void fun2(float x,float y,int c){float z;int n,i;switch(c){case 1: z=x+y;printf("结果:%g+%g=%g\n",x,y,z);break; case 2: z=x-y;printf("结果:%g-%g=%g\n",x,y,z);break; case 3: z=x*y;printf("结果:%g*%g=%g\n",x,y,z);break; case 4: if(y==0)printf("错误!");else{z=x/y;printf("结果:%g/%g=%g\n",x,y,z);}break; case 5: n=x;for(i=1;i<y;i++){x=x*n;}printf("结果:%g\n",x);break;default:printf("请重新输入!");}}void fun3(float x,int c){float z;switch(c){case 6:if(x<0)printf("错误!");else{z=sqrt(x);printf("结果:%g\n",z);}break;default:printf("请重新输入!");}}void convert(int m,int c){char s[128];switch(c){case 7:printf("结果:%o\n",m);break;case 8:printf("结果:%x\n",m);break;default:printf("请重新输入!");}}void main(){for(;;){float x,y,z;int c,m;char h;fun1();printf("请选择运算:\n");printf("1\n2\n3\n4\n5\n6\n7\n8\n9\n"); printf("请输入运算方式前面的数字:\n");scanf("%d",&c);if(c==1||c==2||c==3||c==4||c==5){printf("输入两个数:");scanf("%f%f",&x,&y);fun2(x,y,c);}if(c==6){printf("输入一个数:");scanf("%f",&x);if(x<0)printf("错误!");elsefun3(x,c);}if(c==7||c==8){printf("输入一个数:");scanf("%d",&m);convert(m,c);}if(c==9){printf("<<<<<<<<<谢谢使用!>>>>>>>>>\n");} if(c>='a' && c<='z')printf("没有这个选择!\n");if(c>='A' && c<='Z')printf("没有这个选择!\n");}}。

C课程设计简易计算器实验报告

C课程设计简易计算器实验报告

《程序设计基础》(C++)课程设计报告计算器姓名:班级:学号:指导教师:成绩:完成时间:完成地点:计算器1 基本功能描述计算器包含基本的四则运算、开方、倒数、相反数(正负)等运算。

可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算。

同时包含清除功能。

2 设计思路如图1是计算器总流程图,输完第一个操作数后,若点击双目运算符,则把m_edit 传递给op1,并传递给变量calculator相对运算符对应的值,输入的第二个操作数传递给op2,点击等号根据calculator的值进行相应运算并输出结果。

若点击的是单目运算符,则直接对其处理得出结果。

若点击清零,则m_edit等于0。

设计思路流程图如下(见下页)。

图1 计算器设计思路总流程图3 软件设计3.1 创建步骤打开Microsoft Visual C++ 6.0,选择新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculator及其所在位置。

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成。

MFC AppWizard建立基于对话窗口的程序框架。

3.2 界面设计1、创建控件在对话框上的合适的位置画出编辑框和下压式按钮。

如图2所示。

图2 绘制编辑框在按钮和编辑框属性对话框中输入控件的ID值和标题属性。

如图3所示。

图3 Push Button属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表1 各对象属性对象ID 标题或说明编辑框IDC_EDIT1 结果显示按钮IDC_BUTTON0 0按钮IDC_BUTTON1 1按钮IDC_BUTTON2 2按钮IDC_BUTTON3 3按钮IDC_BUTTON4 4按钮IDC_BUTTON5 5按钮IDC_BUTTON6 6按钮IDC_BUTTON7 7按钮IDC_BUTTON8 8按钮IDC_BUTTON9 9按钮IDC_ BUTTONneg +/-按钮IDC_ BUTTONpot .按钮IDC_ BUTTONadd +按钮IDC_BUTTONsub -按钮IDC_BUTTONmul *按钮IDC_BUTTONdiv /按钮IDC_BUTTONsqrt sqrt按钮IDC_BUTTONCE CE完成后界面如图4所示。

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。

4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。

c简单计算器课程设计报告

c简单计算器课程设计报告

c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。

2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。

3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。

技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。

2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。

3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。

情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。

2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。

3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。

本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。

课程性质为实践操作类,强调学生在动手实践中掌握知识。

在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。

课程目标分解为具体学习成果,以便于后续教学设计和评估。

在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。

二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。

2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。

- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。

4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。

- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。

教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。

c语言实验报告计算器

c语言实验报告计算器

c语言实验报告计算器C 语言实验报告计算器一、实验目的本次 C 语言实验的主要目的是通过编写程序实现一个简单的计算器功能,加深对 C 语言基本语法、数据类型、控制结构和函数的理解和运用,提高编程能力和解决实际问题的能力。

二、实验要求1、实现基本的四则运算(加、减、乘、除)功能。

2、能够处理用户输入的合法表达式,并输出计算结果。

3、具备错误处理能力,如除数为 0 、输入不合法等情况。

三、实验环境本次实验使用的编程环境是 Visual Studio Code,编译器为 GCC。

四、算法设计与思路(一)整体思路首先,需要从用户那里获取输入的表达式。

然后,对表达式进行解析和计算。

在计算过程中,需要根据运算符的优先级进行相应的运算。

为了实现这个过程,可以使用栈来存储运算符和操作数。

(二)具体算法1、定义一个栈来存储运算符,另一个栈来存储操作数。

2、逐字符读取输入的表达式。

如果是数字字符,则将其转换为数字并压入操作数栈。

如果是运算符,则根据运算符的优先级进行处理。

如果当前运算符的优先级高于栈顶运算符的优先级,则将其压入运算符栈。

否则,从操作数栈中弹出两个操作数,从运算符栈中弹出一个运算符,进行相应的运算,并将结果压入操作数栈。

3、当表达式读取完毕后,依次从运算符栈和操作数栈中弹出元素进行计算,直到运算符栈为空,此时操作数栈中的唯一元素即为表达式的计算结果。

五、代码实现```cinclude <stdioh>include <stdlibh>include <ctypeh>//定义栈的最大容量define MAX_SIZE 100//定义操作符栈typedef struct {char itemsMAX_SIZE;int top;} OperatorStack;//定义操作数栈typedef struct {double itemsMAX_SIZE;int top;} OperandStack;//初始化操作符栈void initOperatorStack(OperatorStack stack) {stack>top =-1;}//初始化操作数栈void initOperandStack(OperandStack stack) {stack>top =-1;}//判断操作符栈是否为空int isOperatorStackEmpty(OperatorStack stack) {return stack>top ==-1;}//判断操作数栈是否为空int isOperandStackEmpty(OperandStack stack) {return stack>top ==-1;}//操作符入栈void pushOperator(OperatorStack stack, char op) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = op;} else {printf("Operator stack overflow!\n");exit(1);}}//操作数入栈void pushOperand(OperandStack stack, double num) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = num;} else {printf("Operand stack overflow!\n");exit(1);}}//操作符出栈char popOperator(OperatorStack stack) {if (!isOperatorStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operator stack underflow!\n");exit(1);}}//操作数出栈double popOperand(OperandStack stack) {if (!isOperandStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operand stack underflow!\n");exit(1);}}//获取操作符的优先级int getPriority(char op) {switch (op) {case '+':case '':return 1;case '':case '/':return 2;default:return -1;}}//计算表达式double calculate(char expression) {OperatorStack opStack;OperandStack numStack; initOperatorStack(&opStack);initOperandStack(&numStack);int i = 0;while (expressioni!='\0'){if (isdigit(expressioni)){double num = 0;while (isdigit(expressioni)){num = num 10 +(expressioni '0');i++;}if (expressioni ==''){double fraction = 01;i++;while (isdigit(expressioni)){num +=(expressioni '0') fraction; fraction /= 10;i++;}}pushOperand(&numStack, num);} else if (expressioni =='('){pushOperator(&opStack, expressioni);i++;} else if (expressioni ==')'){while (opStackitemsopStacktop!='('){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}popOperator(&opStack);i++;} else {while (!isOperatorStackEmpty(&opStack) &&getPriority(opStackitemsopStacktop) >= getPriority(expressioni)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}pushOperator(&opStack, expressioni);i++;}}while (!isOperatorStackEmpty(&opStack)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}return popOperand(&numStack);}int main(){char expression100;printf("Enter an expression: ");scanf("%s", expression);double result = calculate(expression);printf("Result: %f\n", result);return 0;}```六、实验结果与分析(一)测试用例及结果以下是一些测试用例及其对应的结果:1、输入:"2 + 3",输出:50000002、输入:"5 2",输出:30000003、输入:"3 4",输出:120000004、输入:"6 / 2",输出:30000005、输入:"2 + 3 4",输出:140000006、输入:"(2 + 3) 4",输出:200000007、输入:"5 / 0",输出:Division by zero!(二)结果分析从测试结果来看,程序能够正确计算基本的四则运算表达式,包括有括号的情况。

设计一个简单计算器的C语言课程设计报告

设计一个简单计算器的C语言课程设计报告

. . . .C语言课程设计报告题目:设计一个简单计算器目录1.设计目的2.容3.总体设计(有流程图)4.源程序编写(附上了运行图)5.执行结果6.心得体会一、设计目的设计一个简单计算器,在功能上功能尽量模拟windows 操作系统中的计算器,系统界面不做强制要求。

全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、容1、程序设计的一般步骤a、确定数据结构b、确定算法c、编程d、调试e、总结资料2、基本要求a.设计正确,方案合理,能实现相应功能。

b.界面友好,使用方便。

c.程序精炼,结构清晰。

d.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。

e.上机演示。

三、总体设计(程序设计组成框图、流程图)四、源程序编写#include<stdio.h>#include<math.h>#include<malloc.h>double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;char nibo[50],zhan2[50]; double x,n,l,z=0,zhan3[20]; typedef struct{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 shu;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;}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];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;\}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];i++;}else if(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;}else if(nibo[t1]=='+'){zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[t1]=='-'){zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[t1]=='*'){zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[t1]=='/'){zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[t1]=='^'){zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[t1]==''){zhan3[t3]=sqrt(zhan3[t3]);}t1++;}return zhan3[1];}void main(){for(;;){char x,a[50];double jieguo;int i=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、输入5 4结果92、输入5 4结果 13、输入5 4结果204、输入5 4结果 1图例:注:分别输入5、4,分别进行加减乘除。

计算器c语言报告

计算器c语言报告

题目一:计算器1.实验目的和意义:利用c语言编写简易计算器,使我们更加熟练的掌握c语言及软件开发的基本步骤。

该课题设计对学生来说 是对这一学期有关c语言学习的一个评估 是将c语言应用于生活中 提高学生的动手能力。

该课题有利于让学生将课本上学习的零散的知识融会贯通、综合运用、强化知识体2.实验内容:了解用户需求,小组讨论算法,编写程序,调试程序,漏洞修复及报告设计3.小组成员分工:小组讨论算法:全体成员编写程序:樊义,高杰林调试程序:曹仲生漏洞修复及报告设计:陈伟杰4.设计要点:字符串内提取数字,加减乘除优先级,能够识别简单的错误算式5.源程序://不包含括号,纠错能力不够,#include "stdio.h"double z(char c[100],int *i){int w=0,d=0;double s=0;while(c[*i]>='0'&&c[*i]<='9') {w++;*i=*i+1;}if(c[*i]=='.'){*i=*i+1;while(c[*i]>='0'&&c[*i]<='9'){w++;d++;*i=*i+1;}}while(w>0){int t=1;for(int tem=w;tem>1;tem--)t=t*10;if(w>d&&d>0)s=s+t*(c[*i-w-1]-'0');elses=s+t*(c[*i-w]-'0');w--;}//printf("整数型num=%3.5f\t",s);if(d>0)for(int temp=0;temp<d;temp++){s=s/10.0;printf("小数型num=%3.5f\t",s);} //printf("函数内%d\t",*i);//printf("小数型num=%3.5f\t",s);return s;}void main(){start:char c[100],a[100];double s[100],num;int i=0,j=0,k=0;printf("输入需要运算的式子(仅加减乘除,且不包含括号,负数,不需输入等号):");reput: scanf("%s",c);i=0,j=0,k=0;int *p=&i;done: switch(c[i]){case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':{num=z(c,p);goto done;}case '*':{i++;num=num*z(c,p);goto done;}case '/':{i++;num=num/z(c,p);goto done;}case'+':{s[j]=num;a[k]=c[i];j++;i++,k++;if(c[i]>='0'&&c[i]<='9')goto done;else {printf("输入错误!请重输:");num=0;goto reput;}} case'-':{s[j]=num;a[k]=c[i];j++;i++,k++;if(c[i]>='0'&&c[i]<='9')goto done;else {printf("输入错误!请重输:");num=0;goto reput;}} case '\0':if(i!=0){s[j]=num;a[k]=c[i];break;}else printf("输入错误!请重输:");num=0;goto reput;default:printf("输入错误!请重输:");num=0;goto reput;}//for(int n=0;n<j;n++)// printf("%f%c",s[n],a[n]);//printf("%f\n",s[j]);if(a[k]=='\0'){j=0;k=0;num=s[0];//printf("已执行!");add: switch(a[k]){case '+':{num=num+s[++j];k++;goto add;}case '-':{num=num-s[++j];k++;goto add;}default:break;}}printf("式子的结果为:%f\n",num);printf("是否继续计算<y/n>.......");char tmp;scanf("%s",&tmp);if(tmp=='y')goto start;}6.小结:。

C语言报告_简单计算器

C语言报告_简单计算器

C语言程序设计报告题目:简单计算器设计者:***专业班级:10090202学号:**********指导教师:***2011年6月25号沈阳理工大学理学院目录1、封面 (1)2、目录 (2)3、题目与要求 (3)4、功能设计 (3)5、流程图 (4)6、模块具体分析…………………………………………………5-77、整个源程序设计 (8)8、C程序设计 (8)9、参考文献 (8)10、附录:程序清单 (9)1题目与要求1.1问题提出本人计划编写一个简单的计算器系统,用于简单的四则运算。

本程序主要考察对循环和加减乘除的运算设计。

1.2本系统涉及的知识点Goto loop循环 switch选择语句嵌套 return退出语句格式化输入和输出 If 判断语句1.3功能要求具备整型数据、浮点型数据的算术(加、减、乘、除)运算能。

依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,(+,-,*,/)第三个运算数(+,-,*,/)第四个运算数。

按回车。

然后输出结果。

例如:输入:1+2+3+4 回车输出102功能设计2.1算法设计本系统需要实现的功能要求:利用switch语句设计如图1所示的主菜单:输入 + - * / 符号三重嵌套switch语句输入一次选着一次路径;最终实现四折运算输入:(数字)(+或-或*或/)(数字)(+或-或*或/)(数字)(+或-或*或/)(数字)按回车输出结果;继续运算或退出程序Switch(+或-或*或/){Switch(+或-或*或/){Switch(+或-或*或/)}Switch(+或-或*或/){Switch(+或-或*或/)}Switch(+或-或*或/){Switch(+或-或*或/)}Switch(+或-或*或/){Switch(+或-或*或/)}}2.2流程图主函数流程图:2.3能模块的具体分析本程序只有一个主函数;多次利用switch选择语句和goto loop 循环返回从新运算和return结束程序1、主函数 main()2、输入函数3.输出函数运行界面如下:4、继续运算5、退出程序输入 n 按回车退出程序附录:程序清单#include<stdio.h>main(){float a,b,c,d,t;char s;printf("欢迎使用我的计算器,祝您用的愉快!\n");printf("\n输入要运算的数据,例如 1+2-3*4 或 1*3/2+5\n"); printf("\n输入 n 退出\n");loop: scanf("%f",&a);scanf("%c",&s);if (s=='n'){return;}switch(s){case '+': scanf("%f",&b); scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c/d);break;}break;case '*': scanf("%f",&c);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c/d);break;}break;case '/': scanf("%f",&c);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c/d);break;}break;}break;case '-': scanf("%f",&b);scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c/d);break;}break;case '*': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c/d);break;}break;case '/': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c/d);break;}break;}break;case '*': scanf("%f",&b);scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c/d);break;}break;case '*': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c/d);break;}break;case '/': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c/d);break;}break;}break;case '/': scanf("%f",&b);scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c/d);break;}break;case '*': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c/d);break;}break;case '/': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c/d);break;}break;}break;default : printf("error\n");break;}printf("\n继续\n");goto loop;printf("\n谢谢您的使用\n");}沈阳理工大学3整个源程序设计1)#include<stdio.h> /*引用库函数*/2)标准输入和输出函数输入和输出数据3)利用if语句判断结束命令4) switch选择结构进行选择运算5)输入错误会提醒出错;error4 C程序设计总结1.程序调试后无错误、警告,运行正常。

c语言简易计算器报告

c语言简易计算器报告

C语言简易计算器报告介绍本文将介绍如何使用C语言编写一个简易的计算器。

计算器可以进行基本的四则运算,包括加法、减法、乘法和除法。

设计思路1.首先,我们需要定义计算器的操作符和操作数。

操作符可以是+, -, *,/,操作数是两个整数或浮点数。

2.接下来,我们需要编写一个函数来接收用户输入的操作符和操作数,并进行相应的计算。

我们可以将这个函数命名为calculate。

3.在calculate函数中,我们根据用户输入的操作符,执行相应的计算操作,并返回计算结果。

如果用户输入的操作符不合法,我们将返回一个错误提示。

4.最后,我们在主函数中调用calculate函数,并显示计算结果。

代码实现下面是实现一个简易计算器的C语言代码:#include <stdio.h>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;default:printf("错误:无效的操作符\n");return-1; // 返回错误代码}return result;}int main() {char operator;float operand1, operand2;float result;printf("请输入操作符和操作数(格式为:操作数1 操作符操作数2):");scanf("%f %c %f", &operand1, &operator, &operand2);result = calculate(operator, operand1, operand2);if (result != -1) {printf("计算结果为:%f\n", result);}return0;}使用说明1.用户需要按照指定格式输入操作数和操作符,例如:2 + 3。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

编号:课程设计说明书题目:简单计算器院(系):信息与通信学院专业:信息对抗学生姓名:孙浩宇刘剑学号: 1100250111 1100250106 指导教师:马杰2013年12 月4 日1. 题目与要求 (1)1.1 课程设计目的 (1)1.2本系统涉及的知识点 (1)1.3功能要求 (1)2.课程设计的基本过程 (1)2.1 功能需求 (1)3.总体设计 (1)3.1 系统模块机构框图 (1)3.2 功能模块框图 (2)3.3系统流程图 (3)3.4界面设计 (4)4.详细设计 (5)4.1模块描述 (5)4.2系统头文件 (5)4.3函数声明 (5)5.程序测试 (12)6.设计总结 (12)6.1谢辞 (12)6.2参考文献 (12)1. 题目与要求1.1 课程设计目的(1)巩固和加深C语言课程的基本知识的理解和掌握(2)掌握C语言编程和程序调试的基本技能(3)利用C语言进行基本的软件设计(4)掌握书写程序设计说明文档的能力(5)提高运用C语言解决实际问题的能力1.2 本系统涉及的知识点Goto loop循环 switch选择语句嵌套return退出语句格式化输入和输出If判断语句函数的调用2. 课程设计的基本过程课程设计的基本过程包括5个步骤,即功能需求,总体设计,详细设计,程序测试,结论。

每个步骤都有其特定的任务。

2.1 功能需求功能概述:该软件为用户提供一个在windows系统上运行的简单计算器,能进行简单的加、减、乘、除四则运算和一些常用特殊运算,包括余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算。

3.总体设计3.1 系统模块机构框图3.2功能模块框图3.3系统流程图3.4界面设计系统主界面四则运算界面特殊运算界面4. 详细设计基于系统需求分析与系统总体设计的结论,本系统采用Visual C++实现各模块的功能。

下面按照模块的划分来分别阐述系统的详细设计和实现过程。

华师C语言简单计算器实验报告参考模板

华师C语言简单计算器实验报告参考模板

院系:计算机学院实验课程:计算机基础实验实验项目:程序设计入门基础指导老师:杨志强开课时间:2010 ~ 2011年度第 2学期专业:计算机类班级: 10本4学生:杨晓添学号:20102100114华南师范大学教务处1.题目:简单计算器2.实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。

3.实验主要硬件软件环境:Window 7Visual C++ 6.04.实验内容:(1)体系设计:程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,能进行简单三角运算,运算结果能正确显示,可以清楚数据等。

(2)设计思路:1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator.2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框3)设计按钮,并修改其相应的ID与Caption.4)选择和设置各控件的单击鼠标事件。

5)为编辑框添加double类型的关联变量m_edit1.6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。

7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码。

(3)程序清单:程序代码如下:// calculator_1Dlg.cpp : implementation file//#include "stdafx.h"#include "calculator_1.h"#include "calculator_1Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CCalculator_1Dlg dialogCCalculator_1Dlg::CCalculator_1Dlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculator_1Dlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculator_1Dlg)m_edit1 = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);tempvalue=0;result=0;sort=0;append=0;}void CCalculator_1Dlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCalculator_1Dlg)DDX_Text(pDX, IDC_EDIT1, m_edit1);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CCalculator_1Dlg, CDialog)//{{AFX_MSG_MAP(CCalculator_1Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON4_plus, OnBUTTON4plus)ON_BN_CLICKED(IDC_BUTTON5_4, OnButton54)ON_BN_CLICKED(IDC_BUTTON6_5, OnButton65)ON_BN_CLICKED(IDC_BUTTON7_6, OnButton76)ON_BN_CLICKED(IDC_BUTTON8_minus, OnBUTTON8minus) ON_BN_CLICKED(IDC_BUTTON12_multi, OnBUTTON12multi) ON_BN_CLICKED(IDC_BUTTON16_div, OnBUTTON16div)ON_BN_CLICKED(IDC_BUTTON9_7, OnButton97)ON_BN_CLICKED(IDC_BUTTON10_8, OnButton108)ON_BN_CLICKED(IDC_BUTTON11_9, OnButton119)ON_BN_CLICKED(IDC_BUTTON13_zero, OnBUTTON13zero) ON_BN_CLICKED(IDC_BUTTON14_equal, OnBUTTON14equal) ON_BN_CLICKED(IDC_RADIO1_sin, OnRADIO1sin)ON_BN_CLICKED(IDC_RADIO2_cos, OnRADIO2cos)ON_BN_CLICKED(IDC_RADIO3_tan, OnRADIO3tan)ON_BN_CLICKED(IDC_RADIO5_log10, OnRADIO5log10)ON_BN_CLICKED(IDC_BUTTON15_clean, OnBUTTON15clean) //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CCalculator_1Dlg message handlersBOOL CCalculator_1Dlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}void CCalculator_1Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CCalculator_1Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CCalculator_1Dlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CCalculator_1Dlg::OnButton1(){// TODO: Add your control notification handler code hereif(append==1) result=0;result=result*10+1;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnButton2(){// TODO: Add your control notification handler code hereif(append==1) result=0;result=result*10+2;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnButton3(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+3;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnBUTTON4plus(){// TODO: Add your control notification handler code here sort=1;tempvalue=result;m_edit1=0;append=1;}void CCalculator_1Dlg::OnButton54(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+4;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnButton65(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+5;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnButton76(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+6;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnBUTTON8minus(){// TODO: Add your control notification handler code here sort=2;tempvalue=result;m_edit1=0;append=1;}void CCalculator_1Dlg::OnBUTTON12multi(){// TODO: Add your control notification handler code here sort=3;tempvalue=result;m_edit1=0;append=1;}void CCalculator_1Dlg::OnBUTTON16div(){// TODO: Add your control notification handler code here sort=4;tempvalue=result;m_edit1=0;append=1;}void CCalculator_1Dlg::OnButton97(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+7;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnButton108(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+8;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnButton119(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+9;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnBUTTON13zero(){// TODO: Add your control notification handler code here if(append==1) result=0;result=result*10+0;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculator_1Dlg::OnBUTTON14equal(){// TODO: Add your control notification handler code here switch(sort){case 1:result=result+tempvalue;break;case 2:result=tempvalue-result;break;case 3:result=tempvalue*result;break;case 4:result=tempvalue/result;break;}m_edit1=result;UpdateData(FALSE);}void CCalculator_1Dlg::OnRADIO1sin(){// TODO: Add your control notification handler code here m_edit1=sin(result);UpdateData(FALSE);}void CCalculator_1Dlg::OnRADIO2cos(){// TODO: Add your control notification handler code here m_edit1=cos(result);UpdateData(FALSE);}void CCalculator_1Dlg::OnRADIO3tan(){// TODO: Add your control notification handler code here m_edit1=tan(result);UpdateData(FALSE);}void CCalculator_1Dlg::OnRADIO5log10(){// TODO: Add your control notification handler code here m_edit1=log10(result);UpdateData(FALSE);}void CCalculator_1Dlg::OnBUTTON15clean(){// TODO: Add your control notification handler code here tempvalue=0;result=0;m_edit1=0.0;UpdateData(FALSE);}(4)运行结果5实验小结:该次实验,是首次使用面向对象窗口进行的实验。

C语言计算器设计实验报告

C语言计算器设计实验报告

C语言计算器设计实验报告班级:11661 姓名:学号:38号一、实验目的:利用C语言编写一个简单的计算器,并能正确运行+,-,*,/四则运算。

二、实验内容:1、编写前分析;(1)、根据实验目的,要求键盘录入表达式,并运行后输出结果;由于键盘录入的表达式含数字和运算符,所以要选择用字符串数据类型输入。

(2)、由于输入的是字符串,而只有数值类型的数据才能参与运算,所以得把字符(串)类型的数据转换为数值类型的数据。

(3)、四则运算时,括号优先级高于乘除,乘除优先级高于加减,程序必须能正确判断其优先级才能得出正确的结果。

(4)、为了保证运行结果的精确度需正确选择所用变量的数据类型。

2、利用所学知识进一步分析以上内容;(1)、利用gets函数输入表达式,例如:gets(calc);(2)、C语言中将字符类型数据转化成数值类型数据方法很多,该程序利用函数库stdlib.h中的atof函数来实现这一目的。

同时注意主函数前加上预处理指令:#include<stdlib.h>。

(3)、为了能正确判断优先级,该程序利用函数间的多层嵌套,循环调用来实现;从优先级最高的括号开始判断,若有括号,再判断括号内部,若无括号判断是否为乘除,最后判断加减;括号内内容法方类似。

具体判断方法在后面将以实例详细介绍。

(4)、为了保证输出数据的精确度,该程序中函数f1()-f4()返回值均用double 类型;用g格式符输出最终结果让输出结果简明而又能保证其精确度。

3、开始编程:首先编写必要的预处理指令,声明必要的函数,定义必要的变量。

#include<stdio.h> (输入,输出函数需要该指令);#include<stdlib.h> (atof函数需要该指令);全局声明:Double f1(); (用于存放最终输出结果);Char calc[n]; (用于存放输入的表达式);Int n; (用于标注clac中的各个元素);编写主函数:int main(void){printf("请输入表达式:\n");gets(calc);(输入表达式)printf("原式=%g\n",f1());(程序将调用f1(),并输出f1()的结果)return(0);}由于四则运算先算出优先级最高的结果,并对同一优先级采用从左到右的顺序计算,所以最终的运算是对表达式进行加减运算。

数据结构课程设计(简单计算器C语言)

数据结构课程设计(简单计算器C语言)

郑州师范学院信息科学与技术学院《简单计算器》课程设计报告设计题目:简单计算器班级: B15计科二班组长:组员:指导教师:完成日期: 2016 年 12 月 23 日成绩:摘要本次选做的课程设计是实现简单计算器的问题。

计算器是一个常用的运算工具,本次课题要求用程序语言的方式解决问题。

此问题仅使用数据结构中的栈操作就可以解决此问题。

而在为了方便使用,添加了easyx图形库实现了UI设计。

为了接近平常使用的计算器,特地创建死循环而且添加了“CE”清空输入和“<-”删除键来控制输入错误或者循环使用的问题。

在UI方面主要是实现按键和点击响应等交互,方便输入和修改,在程序框上面有输入和显示结果的文本框。

在计算过程中,以栈出栈进站的特性把中缀形式的算数表达式转化为计算机方便计算的后缀表达式,最后计算出结果以文本方式显示在结果输出框内。

目录摘要 (I)目录 (II)1需求分析 (3)1.1功能简介及分析 (3)1.2设计平台 (3)2概要设计 (3)2.1 Trans函数 (3)2.2 Compvalue 函数 (4)2.3 GetKey函数 (4)3详细设计和实现 (4)3.1转化为逆波兰式 (4)3.2计算逆波兰式 (6)3.3实现流程图 (7)3.3部分具体程序 (8)4调试与操作说明 (14)4.1调试情况 (14)4.2操作说明 (14)5设计总结 (15)参考文献 (17)1需求分析1.1功能简介及分析本次选做的课程设计是实现简单的计算器并且添加UI的交互。

此计算器是以软件的形式实现的计算器,运行在windows系统。

计算器在功能上分为三类,分别是:常见计算器,专用计算器,综合功能计算器。

常见的计算器又分为四种:①简单型计算器:只实现基本的加减乘除和括号运算。

②科学型计算器:可以进行乘方、开方、指数、对数、三角函数、统计等方面的运算,又称函数计算器。

③程序员计算器:专门为程序员设计的计算器, 主要特点是支持And, Or, Not, Xor:最基本的与或非和异或操作, 移位操作 Lsh, Rsh:全称是Left Shift和Right Shift,也就是左移和右移操作,你需要输入你要移动的位数(不能大于最大位数) RoL, RoR:全称是Rotate Left和Rotate Right,对于RoL来讲,就是向左移动一位,并将移出的那位补到最右边那位上,RoR类似。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C 语言课程设计报告
系:
级:
号:
名:
院 班 学 姓
、课程设计目的
、课程设计的基本过程
课程设计的基本过程包括 5 个步骤,即功能需求,总体
设计,详细设计,程序测试,结论。

每个步骤都有其特定的 任务。

2.1 【功能需求】
功能概述:该软件为用户提供一个在 windows 系统上
运 行的简单计算器,能进行简单的加、减、乘、除四则运算和
些常用特殊运算,包括余弦运算、正弦运算、正切运算、 绝对值、平方根运算、以 e 为底的指数运算、以 10 为底的 对数运算。

2.2 【总体设计】
1. 巩固和加深 C 语言课程的基本知识的理解和掌握
2. 掌握 C 语言编程和程序调试的基本技能
3. 利用 C 语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用 C 语言解决实际问题的能力。

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。

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

提高程序开发能力。

二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。

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

3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

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

5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。

四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。

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