简易计算器C界面设计与代码
简易计算器C语言代码

简易计算器C语言代码 Last updated on the afternoon of January 3, 2021简易四则运算计算器计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。
直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。
17世纪初,西方国家的计算工具有了较大的发展。
英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。
这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。
项目设计目的掌握模块的划分;掌握结构体定义;掌握栈的操作;掌握函数的定义;掌握栈的基本操作;掌握VC的基本绘图库;掌握鼠标的响应操作;目设计内容设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。
项目设计要求根据分析,系统要求实现以下几点基本功能:可通过按钮输入数字、运算符;能通过按钮实现退格、清除功能;实现加、减、乘、除、开方运算功能;实现括号运算;显示运算结果;良好的交互界面。
项目详细设计功能模块图根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。
计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。
计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。
计算器计算处理模块。
计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。
计算处理模块在按键控制模块中被调用执行。
C语言实现简单计算器

C语⾔实现简单计算器本⽂实例为⼤家分享了C语⾔实现简单计算器的具体代码,供⼤家参考,具体内容如下实现效果如图:实现代码如下:#include<stdio.h>#include<windows.h>//gotoxy#include<conio.h>#define width 80#define height 30void gotoxy(int x, int y);void GreateFrame(){int i = 0;for (i = 0 ; i < width; i += 2){gotoxy(i, 0); printf("■");gotoxy(i, height); printf("■");}for (i = 0; i < height + 1; i++){gotoxy(0 , i); printf("■");gotoxy(width, i); printf("■");}}void Add(){float i, j;printf("*加法运算*\n");scanf_s("%f %f", &i, &j);printf("%5.2f + %5.2f=%5.2f\n", i, j, i+j); _getch();}void Sub(){float i, j;printf("*减法运算*\n");scanf_s("%f %f", &i, &j);printf("%5.2f - %5.2f=%5.2f\n", i, j, i -j); _getch();}void Mul(){float i, j;printf("*乘法运算*\n");scanf_s("%f %f", &i, &j);printf("%5.2f * %5.2f=%5.2f\n", i, j, i * j); _getch();}void Div(){float i, j;printf("*除法运算*\n");scanf_s("%f %f", &i, &j);printf("%5.2f / %5.2f=%5.2f\n", i, j, i / j); _getch();}int main(int argc, char* argv[]){int choose;while (1){GreateFrame();gotoxy(width / 3, height / 3 + 2);printf("1.加法");gotoxy(width / 3, height / 3 + 4);printf("2.减法");gotoxy(width / 3, height / 3 + 6);printf("3.乘法");gotoxy(width / 3, height / 3 + 8);printf("4.除法");gotoxy(width / 3, height / 3 + 10);printf("5.退出程序");gotoxy(width / 3, height / 3);printf("请选择你要计算的⽅式:( )\b\b"); scanf_s("%d", &choose);switch (choose){case 1:system("cls");Add(); break;case 2:system("cls");Sub(); break;case 3:system("cls");Mul(); break;case 4:system("cls");Div(); break;case 5:exit(0);}system("cls");}}void gotoxy(int x, int y){COORD POS;POS.X = x;POS.Y = y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),POS);}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2
或
逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】
c语言制作简单的计算器

c语言制作简单的计算器在计算机编程领域中,C语言是一种广泛使用的编程语言之一。
它具有简单易学的特点,并且能够进行复杂的计算和逻辑处理。
今天,我们就来学习一下如何使用C语言来制作一个简单的计算器。
首先,我们需要明确我们计算器的功能和界面设计。
本次制作的计算器将具有基本的四则运算功能,即加法、减法、乘法和除法。
我们将在控制台中实现计算器的操作,并通过简单的用户界面进行交互。
接下来,我们需要创建一个C语言程序的框架。
首先,我们需要包含头文件,以便在程序中使用各种函数和变量。
我们可以使用"#include" 来引入头文件,例如:```c#include <stdio.h>```然后,我们需要定义主函数 `main()`。
在这个函数中,我们将编写计算器的逻辑代码。
让我们开始编写函数吧!首先,我们需要声明一些变量来存储用户输入的数字和运算符。
我们可以使用 `int` 来定义整数变量,并用 `char` 定义字符变量。
例如:```cint num1, num2, result;char operator;```接下来,我们需要提示用户输入要进行的运算,并读取用户输入的数字和运算符。
我们可以使用 `printf` 和 `scanf` 函数来完成这个任务,例如:```cprintf("请输入第一个数字: ");scanf("%d", &num1);printf("请输入运算符(+, -, *, /): ");scanf(" %c", &operator);printf("请输入第二个数字: ");scanf("%d", &num2);```注意,我们在读取运算符之前添加了空格,这是为了消除输入缓冲区中可能残留的换行符等字符。
接下来,我们需要编写代码来进行实际的计算操作。
简易计算器代码

button[10] = new QPushButton(buttontext[10],this,buttontext[10]); // “—”
button[10]->setFixedSize(BUTTONWIDTH,BUTTONHEIGHT);
edit->setText(tr("%1").arg(0)); //这个函数可获取文本编辑框中光标的位置,并显示在状态栏中
//setText(tr(“%1行%2列”).arg(rowNum).arg(colNum));
initialize(); //调用初始化函数
}
void CWidget::initialize()
cwidget.cpp
#include "cwidget.h"
#define KEY_CLR "CLR"
#define KEY_ADD "+"
#define KEY_SUB "-"
#define KEY_MUL "*"
#define KEY_DIV "/"
#define KEY_EQ "="
#define KEY_0 "0"
{
delete edit;
delete *button;
delete mainLayout;
delete topLayout;
delete bottomLayout;
}
void CWidget::calculate() //响应按键“=”,调用计算功能
c语言计算器程序编写代码

c语言计算器程序编写代码C语言是一门广泛应用于计算机程序设计中的高级编程语言,计算器是我们日常生活中必不可少的工具之一。
今天,我们将探讨如何使用C语言编写计算器程序。
步骤一:确定计算器的基本功能在开始编写任何计算器程序之前,我们需要先决定它的基本功能。
例如,我们需要让计算器能够执行四种基本算术运算 -- 加、减、乘、除。
我们可能还需要添加其他一些功能,例如计算百分数、开根号、求幂等。
步骤二:编写C语言代码接下来,我们可以开始编写计算器程序的C代码。
此时,我们需要确定程序的最外层框架。
这包括用于接收用户输入、调用所需的函数以及输出结果的代码。
例如,我们可以使用如下的代码框架:```#include <stdio.h>int main() {// 接收输入// 调用对应的函数进行计算// 输出结果return 0;}```步骤三:编写函数我们需要编写函数来执行各种计算。
例如,我们可以编写一个add函数来执行加法,一个Subtract函数来执行减法,以此类推。
对于每个函数,我们需要指定它所需的输入,以及它返回的输出。
例如,对于add函数,我们期望它将两个数字相加,并返回结果:```int add(int x, int y) {return x + y;}```步骤四:解析用户输入为了使计算器程序更加友好,我们希望程序能够解析用户输入并检查其是否有效。
例如,如果用户输入了两个不能相互转换为数字的字符串,则程序应该输出错误消息。
步骤五:测试代码最后,我们需要测试我们的代码以确保它能够正常工作。
这意味着我们应该使用各种输入和边缘情况进行测试,例如“0除以任何数字”和“无效输入”的情况。
总结编写C语言计算器程序可能看起来很困难,但实际上它是一项非常有趣的任务,因为它要求我们配备基本的编程知识并创造性地思考解决方案。
通过这篇文章,我们了解了如何确定计算器的基本功能,如何编写C语言代码并编写函数,如何解析用户输入以及如何测试我们的代码。
计算器编程c语言

计算器编程 c语言用C语言设计计算器程序源代码#include <dos.h> /*DOS接口函数*/#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/函数*/#include <stdio.h> /*I/O#include <stdlib.h> /*库函数*/变量长度参数表*/#include <stdarg.h> /*图形函数*/#include <graphics.h> /*字符串函数*/#include <string.h> /*字符操作函数*/#include <ctype.h> /*#define UP 0x48 /*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/使用调色板信息*/struct palettetype palette; /*int GraphDriver; /* 图形设备驱动*/int GraphMode; /* 图形模式值*/int ErrorCode; /* 错误代码*/int MaxColors; /* 可用颜色的最大数值*/int MaxX, MaxY; /* 屏幕的最大分辨率*/double AspectRatio; /* 屏幕的像素比*/void drawboder(void); /*画边框函数*/初始化函数*/void initialize(void); /*计算器计算函数*/void computer(void); /*改变文本样式函数*/ void changetextstyle(int font, int direction, int charsize); /*窗口函数*/void mwindow(char *header); /*/*获取特殊键函数*/int specialkey(void) ;设置箭头光标函数*//*int arrow();/*主函数*/int main(){设置系统进入图形模式 */initialize();/*运行计算器 */computer(); /*系统关闭图形模式返回文本模式*/closegraph();/*/*结束程序*/return(0);}/* 设置系统进入图形模式 */void initialize(void){int xasp, yasp; /* 用于读x和y方向纵横比*/GraphDriver = DETECT; /* 自动检测显示器*/initgraph( &GraphDriver, &GraphMode, "" );/*初始化图形系统*/ErrorCode = graphresult(); /*读初始化结果*/如果初始化时出现错误*/if( ErrorCode != grOk ) /*{printf("Graphics System Error: %s\n",显示错误代码*/grapherrormsg( ErrorCode ) ); /*退出*/exit( 1 ); /*}getpalette( &palette ); /* 读面板信息*/MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/MaxX = getmaxx(); /* 读屏幕尺寸 */MaxY = getmaxy(); /* 读屏幕尺寸 */getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/计算纵横比值*/ AspectRatio = (double)xasp/(double)yasp;/*}/*计算器函数*/void computer(void){定义视口类型变量*/struct viewporttype vp; /*int color, height, width;int x, y,x0,y0, i, j,v,m,n,act,flag=1;操作数和计算结果变量*/float num1=0,num2=0,result; /*char cnum[5],str2[20]={""},c,temp[20]={""};定义字符串在按钮图形上显示的符号 char str1[]="1230.456+-789*/Qc=^%";/**/mwindow( "Calculator" ); /*显示主窗口 */设置灰颜色值*//*color = 7;getviewsettings( &vp ); /* 读取当前窗口的大小*/width=(vp.right+1)/10; /* 设置按钮宽度 */设置按钮高度 */height=(vp.bottom-10)/10 ; /*/*设置x的坐标值*/x = width /2;设置y的坐标值*/y = height/2; /*setfillstyle(SOLID_FILL, color+3);bar( x+width*2, y, x+7*width, y+height );/*画一个二维矩形条显示运算数和结果*/setcolor( color+3 ); /*设置淡绿颜色边框线*/rectangle( x+width*2, y, x+7*width, y+height );/*画一个矩形边框线*/设置颜色为红色*/setcolor(RED); /*输出字符串"0."*/outtextxy(x+3*width,y+height/2,"0."); /*/*设置x的坐标值*/x =2*width-width/2;设置y的坐标值*/y =2*height+height/2; /*画按钮*/for( j=0 ; j<4 ; ++j ) /*{for( i=0 ; i<5 ; ++i ){setfillstyle(SOLID_FILL, color);setcolor(RED);bar( x, y, x+width, y+height ); /*画一个矩形条*/rectangle( x, y, x+width, y+height );sprintf(str2,"%c",str1[j*5+i]);/*将字符保存到str2中*/outtextxy( x+(width/2), y+height/2, str2);移动列坐标*/x =x+width+ (width / 2) ;/*}y +=(height/2)*3; /* 移动行坐标*/x =2*width-width/2; /*复位列坐标*/}x0=2*width;y0=3*height;x=x0;y=y0;gotoxy(x,y); /*移动光标到x,y位置*/显示光标*/arrow(); /*putimage(x,y,rar,XOR_PUT);m=0;n=0;设置str2为空串*/strcpy(str2,""); /*当压下Alt+x键结束程序,否则执行下面的循环while((v=specialkey())!=45) /**/{当压下键不是回车时*/while((v=specialkey())!=ENTER) /*{putimage(x,y,rar,XOR_PUT); /*显示光标图象*/if(v==RIGHT) /*右移箭头时新位置计算*/if(x>=x0+6*width)如果右移,移到尾,则移动到最左边字符位置*//*{x=x0;m=0;}else{x=x+width+width/2;m++;否则,右移到下一个字符位置*/} /*if(v==LEFT) /*左移箭头时新位置计算*/if(x<=x0){x=x0+6*width;m=4;} /*如果移到头,再左移,则移动到最右边字符位置*/else{x=x-width-width/2;m--;} /*否则,左移到前一个字符位置*/if(v==UP) /*上移箭头时新位置计算*/if(y<=y0){y=y0+4*height+height/2;n=3;} /*如果移到头,再上移,则移动到最下边字符位置*/else{y=y-height-height/2;n--;} /*否则,移到上边一个字符位置*/if(v==DOWN) /*下移箭头时新位置计算*/if(y>=7*height){ y=y0;n=0;} /*如果移到尾,再下移,则移动到最上边字符位置*/else{y=y+height+height/2;n++;} /*否则,移到下边一个字符位置*/putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ }将字符保存到变量c中*/c=str1[n*5+m]; /*判断是否是数字或小数点*/if(isdigit(c)||c=='.') /*{如果标志为-1,表明为负数*/if(flag==-1) /*{将负号连接到字符串中*/strcpy(str2,"-"); /*flag=1;} /*将标志值恢复为1*/将字符保存到字符串变量temp中*/ sprintf(temp,"%c",c); /*将temp中的字符串连接到str2中*/strcat(str2,temp); /*setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);显示字符串*/outtextxy(5*width,height,str2); /*}if(c=='+'){将第一个操作数转换为浮点数*/num1=atof(str2); /*将str2清空*/strcpy(str2,""); /*做计算加法标志值*/act=1; /*setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);显示字符串*/outtextxy(5*width,height,"0."); /*}if(c=='-'){如果str2为空,说明是负号,而不是减号*/ if(strcmp(str2,"")==0) /*设置负数标志*/flag=-1; /*else{将第二个操作数转换为浮点数*/num1=atof(str2); /*将str2清空*/strcpy(str2,""); /*act=2; /*做计算减法标志值*/setfillstyle(SOLID_FILL,color+3);画矩形*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*显示字符串*/outtextxy(5*width,height,"0."); /*}}if(c=='*'){将第二个操作数转换为浮点数*/num1=atof(str2); /*strcpy(str2,""); /*将str2清空*/做计算乘法标志值*/act=3; /*setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width /2,3*height/2);显示字符串*/outtextxy(5*width,height,"0."); /*}if(c=='/'){将第二个操作数转换为浮点数*/num1=atof(str2); /*strcpy(str2,""); /*将str2清空*/做计算除法标志值*/act=4; /*setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='^'){将第二个操作数转换为浮点数*/num1=atof(str2); /*将str2清空*/strcpy(str2,""); /*做计算乘方标志值*/act=5; /*设置用淡绿色实体填充*/ setfillstyle(SOLID_FILL,color+3); /*画矩形*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*显示字符串*/outtextxy(5*width,height,"0."); /*}if(c=='%'){将第二个操作数转换为浮点数*/num1=atof(str2); /*strcpy(str2,""); /*将str2清空*/做计算模运算乘方标志值*/act=6; /*setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/画矩形*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*显示字符串*/outtextxy(5*width,height,"0."); /*}if(c=='='){将第二个操作数转换为浮点数*/num2=atof(str2); /*根据运算符号计算*/switch(act) /*{case 1:result=num1+num2;break; /*做加法*/case 2:result=num1-num2;break; /*做减法*/case 3:result=num1*num2;break; /*做乘法*/case 4:result=num1/num2;break; /*做除法*/case 5:result=pow(num1,num2);break; /*做x的y次方*/case 6:result=fmod(num1,num2);break; /*做模运算*/ }设置用淡绿色实体填充*/ setfillstyle(SOLID_FILL,color+3); /*覆盖结果区*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*将结果保存到temp中*/sprintf(temp,"%f",result); /*outtextxy(5*width,height,temp); /*显示结果*/}if(c=='c'){num1=0; /*将两个操作数复位0,符号标志为1*/num2=0;flag=1;strcpy(str2,""); /*将str2清空*/设置用淡绿色实体填充*/ setfillstyle(SOLID_FILL,color+3); /*覆盖结果区*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*显示字符串*/outtextxy(5*width,height,"0."); /*}如果选择了q回车,结束计算程序*/if(c=='Q')exit(0); /*}putimage(x,y,rar,XOR_PUT); /*在退出之前消去光标箭头*/返回*/return; /*}/*窗口函数*/void mwindow( char *header ){int height;cleardevice(); /* 清除图形屏幕 */setcolor( MaxColors - 1 ); /* 设置当前颜色为白色*//* 设置视口大小 */ setviewport( 20, 20, MaxX/2, MaxY/2, 1 );height = textheight( "H" ); /* 读取基本文本大小 */settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*设置文本样式*/settextjustify( CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/输出标题*/outtextxy( MaxX/4, 2, header ); /*setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*设置视口大小*/ 画边框*/drawboder(); /*}画边框*/void drawboder(void) /*{定义视口类型变量*/struct viewporttype vp; /*setcolor( MaxColors - 1 ); /*设置当前颜色为白色 */setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*设置画线方式*/将当前视口信息装入vp所指的结构中*/getviewsettings( &vp );/*画矩形边框*/rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*}/*设计鼠标图形函数*/int arrow(){int size;定义多边形坐标*/int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*设置填充模式*/setfillstyle(SOLID_FILL,2); /*/*画出一光标箭头*/fillpoly(8,raw);测试图象大小*/size=imagesize(4,4,16,16); /*分配内存区域*/rar=malloc(size); /*存放光标箭头图象*/getimage(4,4,16,16,rar); /*putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象*/return 0;}/*按键函数*/int specialkey(void){int key;等待键盘输入*/while(bioskey(1)==0); /*key=bioskey(0); /*键盘输入*/只取特殊键的扫描值,其余为0*/ key=key&0xff? key&0xff:key>>8; /*return(key); /*返回键值*/}。
可视化计算器c语言代码

可视化计算器c语言代码好的,这是一个简易计算器的可视化界面的示例代码,使用`Graphics.h`库实现:```c#include <graphics.h>#include <conio.h>#include <stdio.h>int main() {int gd = DETECT, gm;initgraph(&gd, &gm, "");int x, y, a, b;char c;// 设置文本和背景颜色为白色setcolor(WHITE);// 设置文本方向为水平方向settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);// 在屏幕上输出提示信息和输入框outtextxy(100, 100, "Enter the first number: ");scanf("%d", &a);outtextxy(100, 150, "Enter the second number: ");scanf("%d", &b);setcolor(YELLOW);outtextxy(100, 200, "Choose an operation (+, -, *, /): ");c = getch();// 根据用户选择的操作计算结果switch (c) {case '+':x = a + b;break;case '-':x = a - b;break;case '*':x = a * b;break;case '/':x = a / b;break;default:printf("Invalid operation.\n");return 0;}// 设置文本颜色为绿色setcolor(GREEN);outtextxy(100, 250, "The result is: ");printf("%d\n", x);getch();// 关闭图形界面closegraph();return 0;}```上述代码使用`initgraph()`函数初始化图形界面,在屏幕上显示了几个提示信息和输入框,然后根据用户选择的操作计算结果并输出。
基于单片机的简易计算器设计原理图及程序代码

for(i=2;i<9;i++)
dsp[i]=12;
c=0;
}
while(dsp[0]==15&&c==0)
{
dsp[0]=keyscan();
if(dsp[0]==14||dsp[0]<10)
{
dsp[0]=14;
dsp[1]=0;
for(i=2;i<9;i++)
dsp[i]=12;
r[3]=(x%10000)/1000;
r[4]=(x%100000)/10000;
r[5]=(x%1000000)/100000;
r[6]=(x%10000000)/1000000;
r[7]=x/10000000;
}
}
if(k==13)
{
if(y==0)
{
BEEP=0;
r[0]=11;
r[1]=11;
if(k==10)
{
x=x+y;
if(x>99999999)
{
BEEP=0;
r[0]=11;
r[1]=11;
r[2]=10;
r[3]=12;
r[4]=12;
r[5]=12;
r[6]=12;
r[7]=12;
}
else
{
r[0]=x%10;
r[1]=(x%100)/10;
r[2]=(x%1000)/100;
P2=0xff;
}
}
ET0=1;
}
x=10000*x;
x=x+a[0]+a[1]*10+a[2]*100+a[3]*1000+a[5]*100000+a[6]*1000000+a[7]*10000000;
C语言实现简易计算器(可作加减乘除)

C语⾔实现简易计算器(可作加减乘除)C语⾔实现简易计算器(加减乘除)计算器作为课设项⽬,已完成答辩,先将代码和思路(注释中)上传⼀篇博客已增添、修改、整理⾄⽆错且可正常运⾏虽使⽤了栈,但初学者可在初步了解栈和结构语法后理解代码#include <stdlib.h>#include <stdio.h>#include <string.h>#define IsDouble 0#define IsChar 1//_______________________________________________________________________________________________________________________________________________________ //1.⽀持浮点数和字符的栈typedef struct {char * buffer;int typesize;int top;int max;} stack;stack * CreateStack(int max, int typesize);//创建⼀个栈void DestroyStack(stack *);//释放栈的空间void ClearStack(stack *);//清空栈int Push(stack *, void *);//⼊栈int Pop(stack *, void *);//出栈int GetSize(stack *s);//得到栈的⼤⼩int GetTop(stack *, void *);//找到栈顶int IsEmpty(stack *);//判断是否为空栈,空则下溢int IsFull(stack *);//判断栈是否已满,满则溢出stack * CreateStack(int max, int typesize){stack * s = (stack*)malloc(sizeof(stack));//为栈s malloc内存if (!s) return 0;//为结构中buffer元素malloc内存s->buffer = (char *)malloc(sizeof(char) * max * typesize);if (!s->buffer) return 0;//初始化结构中的栈顶,最⼤值,类型⼤⼩s->top = -1;s->max = max;s->typesize = typesize;return s;}void DestroyStack(stack* s){free(s->buffer);//先释放buffer的空间free(s);//在释放s的空间}void ClearStack(stack * s){s->top = -1;//清空栈(栈头位置归零)}int Push(stack * s, void * data){if (IsFull(s)) return 0;//如果栈已满则return 0,防⽌溢出//栈未满则将栈头移动打动下⼀位置,并将data中的元素拷⼊栈中buffer的第top位置s->top++;memcpy(s->buffer + s->top*s->typesize, data, s->typesize);//⼊栈成功return 1return 1;}int Pop(stack * s, void * data){if (IsEmpty(s)) return 0;//出栈判断栈是否为空,若为空则return 0//栈未空则将buffer中top位置的字符拷⼊data记录,并让栈头向前移动⼀个位置memcpy(data, s->buffer + s->top*s->typesize, s->typesize);s->top--;//成功则return 1return 1;}int GetSize(stack *s){return s -> top+1;//栈头位置+1得到⼤⼩}int GetTop(stack *s, void * data){if (IsEmpty(s)) return 0;//如果栈空return 0//栈不为空则将top位置的字符拷回data记录,得到栈头memcpy(data, s->buffer + s->top*s->typesize, s->typesize);//成功则return 1;return 1;}int IsEmpty(stack * s){return s->top == -1;//如果top为-1则栈空}int IsFull(stack * s){return s->top == s->max-1;//如果top为max-1则栈满}//___________________________________________________________________________________________________________________________________________________ //2.定义⼀个cal类型,其中data存数时sign为IsDouble,存字符时,sign为Ischartypedef struct {double data;char sign;} cal;//3.查找对应符号(找到则返回该符号下标)(找不到则说明该部分为数字返回-1)int SearchCode(char ch){char * code = "+-*/()@";//@为终⽌符,算式输⼊结束int index = 0;//while (code[index]){if (code[index] == ch) return index;index++;}return -1;}//4.得到两个符号间的优先级//与SearchCode相对应,char GetPriority(char ch, char next){//创建⼀个perferen表,第i⾏(列)对应SearchCode函数中code中的第i个字符char perferen[7][7] = {">><<<>>",">><<<>>",">>>><>>",">>>><>>","<<<<<=E",">>>>E>>","<<<<<E="};//找到两个形参对应的字符int c = SearchCode(ch);int n = SearchCode(next);//如果找不到对应运算符(字符不是运算符⽽是为数字)return Eif (c==-1 || n==-1) return 'E';//如果找到两个对应运算符则按照优先级表返回两个运算符的优先级return perferen[c][n];}//5.四则运算double add(double a, double b) { return a+b; }double sub(double a, double b) { return a-b; }double mul(double a, double b) { return a*b; }double ddiv(double a, double b) { return a/b; }//整合四种运算double calcu(double a, char ch, double b){double (*calculation[4])(double,double) = {add,sub,mul,ddiv};return calculation[SearchCode(ch)](a,b);}//6.检测字符串int CheckStr(char * buffer){int n;//遍历字符串确保算式中⽆⾮法字符若检测到⾮法字符return 0,若都合法则return 1for (n = 0;buffer[n];n++){if ((SearchCode(buffer[n]) != -1 || buffer[n] == '.' || (buffer[n] >= '0' && buffer[n] <= '9')) && buffer[n] != '@') continue;else return 0;}buffer[n] = '@';//加上终⽌符,表⽰算式结束buffer[n+1] = '\0';return 1;}//7.得到数据转化为double类型存⼊rsint GetDigit(char * buffer, int * n, double * rs){char str[30];int i,j = 0;for (i = 0;SearchCode(buffer[*n]) == -1;i++){str[i] = buffer[*n];//从*n位置开始,将这⼀串数字字符存⼊str(*n)++;}str[i] = '\0';for (i = 0;str[i];i++){if (str[i] == '.') j++;}//如果⼀段⼩数有多个⼩数点或⼩数点在数字⾸尾,return 0if (j>1 || str[i-1] == '.' || str[0] == '.') return 0;//rs接收转化为double的数据*rs = atof(str);//操作成功return 1return 1;}//8.将⽤户输⼊的buffer字符串转化为可供程序运算的calstr数组int resolu(char * buffer, cal * calstr){int i = 0, j = 0;cal c;while (buffer[i]){if (SearchCode(buffer[i]) == -1){//如果得到数据不成功则return 0if (GetDigit(buffer,&i, &c.data) == 0) return 0;//如果成功得到数据则在c.sign标记为浮点数c.sign = IsDouble;//将c存⼊数组calstr中calstr[j++] = c;}else{//若符号为运算符//判断正负号if (buffer[i] == '-' && (buffer[i-1] == '('||buffer[i-1] == '+'||buffer[i-1] == '-'||buffer[i-1] == '*'||buffer[i-1] == '/') || (i==0 && buffer[0] == '-')){ i++;if (GetDigit(buffer,&i, &c.data) == 0) return 0;//在符号的下⼀位开始查找,若找不到数字return 0//否则,给数字取相反数,c.sign标记为浮点数,存⼊calstr中c.data = 0 - c.data;c.sign = IsDouble;calstr[j++] = c;} else//如果是正号,与符号处理⽅式同理if (buffer[i] == '+' && (buffer[i-1] == '('||buffer[i-1] == '+'||buffer[i-1] == '-'||buffer[i-1] == '*'||buffer[i-1] == '/') || (i==0 && buffer[0] == '+')){ i++;if (GetDigit(buffer, &i, &c.data) == 0) return 0;c.sign = IsDouble;calstr[j++] = c;}else{//如果不是正负号,则为运算符,先强制转换为double类型存在c.data⾥,然后c.sign标记为char类型,存⼊calstrc.data = (double)buffer[i++];c.sign = IsChar;calstr[j++] = c;}}}//操作蔡成功则return 1return 1;}//9.计算出结果int result(cal * calstr, double * rs){stack * pst = CreateStack(100,sizeof(char));//运算符栈stack * pnd = CreateStack(100,sizeof(double));//数据栈double num1,num2;int n = 0;char ch = '@';Push(pst, &ch);//在转换得到的calstr中遍历直到终⽌符'@"while(ch != '@' || !(calstr[n].sign == IsChar && (char)calstr[n].data == '@')){//如果calstr的n位上是浮点数,则将这个data压栈进⼊数据栈pnd中if (calstr[n].sign == IsDouble){Push(pnd, &(calstr[n].data));n++;}//反之,如果是运算符,则要检测优先级else{switch( GetPriority(ch, (char)calstr[n].data)){//如果运算符优先级较⼩,则让ch等于优先级⼤的符号并压⼊符号栈pst中case '<':ch = (char)calstr[n].data;Push(pst, &ch);n++;break;//如果结果为等号,让符号出栈暂存到ch中case '=':if (!Pop(pst, &ch)) return 0;n++;break;//如果ch优先级较⾼,则将前两个数字及运算符出栈,分别储存⾄num2,ch,num1中,进⾏运算,得到的结果再次压栈进⼊pnd中 case '>':if (!(Pop(pnd,&num2) && Pop(pst,&ch) && Pop(pnd,&num1))) return 0;num1 = calcu(num1,ch,num2);Push(pnd, &num1);break;//如果符号顺序出错,return 0case 'E':return 0;}}//检测是否可以得到栈顶符号,栈空则return 0if (!GetTop(pst, &ch)) return 0;}//如果栈中得到了最终结果,并且取出pnd中的最终结果到rs,return 1if (GetSize(pnd) == 1 && GetTop(pnd,rs)){DestroyStack(pst);DestroyStack(pnd);return 1;}//否则 return 0else{return 0;}}//10.⽤户交互函数void treatment(){char buffer[100];//⽤户输⼊的字符串(算式)cal calstr[50];//计算⽤的数组double rs = 0;//计算结果printf("Enter your equation:");gets(buffer);//让⽤户输⼊算式buffer//⽤户不输⼊"exit"就不退出while (!(buffer[0]=='e' && buffer[1]=='x' && buffer[2]=='i' && buffer[3]=='t')){//检查buffer中字符君合法,成功将buffer转化为⽤于计算的calstr数组,成功计算出结果存⼊rsif (CheckStr(buffer) && resolu(buffer,calstr) && result(calstr,&rs)){printf("\n%lf\n",rs);}else{printf("\nError!\n");}printf("Enter \"exit\"to quit");printf("\nEnter your equation:");gets(buffer);//再次让⽤户输⼊算式}printf("\nbye\n");}//11.主函数int main(){treatment();}参考⽂献链接如下[参考⽂献]()。
VC++制作一个入门的计算器软件

VC++整理入门计算器本文档是运用VC++6.0整理一个入门计算器的过程。
由于时间和知识技能原因,只能简单的做一个入门级的计算器(只实现加减乘除功能),以后的内容再追加。
一、建立工程启动VC++6.0,然后“文件”新建一个工程,选择“MFC AppWizard(exe)”选项,输入工程名,确定。
(如下图)弹出“MFC应用程序向导-步骤1”选择“基本对话框”,语言选“中文”,点击完成。
在弹出的控件界面,把按钮先删除。
二、设计计算器界面根据自己的喜好设计计算器的界面,(下图是我设计的简易的界面)。
用控件里面的布局计算器的界面,修改按钮显示,先右击要修改的按钮,选择“属性”,修改对应的“标题”。
按钮设计好之后,设置对应的类,加减乘除四个运算符分别如下设置,右击选“建立类向导”,在“Message Maps”选项内,选对应的“IDC_BUTTON1”,设置Messages:BN_CLICKED,然后“Add Function”,一次选择其他三个按钮,按确定。
(如下图)编辑框如下类,同样是右击编辑框,右击选“建立类向导”,选择第二个选项,选择IDC_EDIT1,然后选Add Variable...,在弹出的对话框中名字中输入m_num1,类型选数字Double,对应设置剩下的编辑框,然后确定。
下一步是输入代码。
三、代码的输入双击“+”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton1(){UpdateData(1);m_num3=m_num1+m_num2;UpdateData(0);}双击“-”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton2(){UpdateData(1);m_num3=m_num1-m_num2;UpdateData(0);}双击“X”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton3(){UpdateData(1);m_num3=m_num1*m_num2;UpdateData(0);}双击“/”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton4(){UpdateData(1);if(m_num2==0)MessageBox("除数不能为0,请重新输入除数!");elsem_num3=m_num1/m_num2;UpdateData(0);}四:测试到此软件设置完成,运行看看。
C语言简易计算器的实现

C语言简易计算器的实现C语言简易计算器是一种用于进行基本数学运算的程序。
实现一个简易计算器的关键是要能够解析用户输入的数学表达式,并将其转化为计算机可以理解的形式,然后进行计算,并输出结果。
下面是一个大约1200字以上的示例实现。
```c#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <ctype.h>#define MAX_SIZE 100//定义操作符的优先级int getPriority(char op)if (op == '+' , op == '-')return 1;else if (op == '*' , op == '/')return 2;elsereturn 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++];}postfixExp[j++] = ' ';i--;}else if (infixExp[i] == '(') { // 左括号压入栈stack[++top] = infixExp[i];}else if (infixExp[i] == ')') { // 右括号弹出栈内所有操作符并输出到后缀表达式,直到遇到左括号while (top != -1 && stack[top] != '(')postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';}top--; // 弹出栈顶的左括号}else { // 操作符while (top != -1 && getPriority(stack[top]) >=getPriority(infixExp[i]))postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';stack[++top] = infixExp[i];}}while (top != -1) { // 将栈内剩余操作符弹出并输出到后缀表达式postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';}postfixExp[j] = '\0';//计算后缀表达式的值int evaluatePostfix(char* postfixExp)char stack[MAX_SIZE];int top = -1;for (int i = 0; postfixExp[i] != '\0'; i++)if (isdigit(postfixExp[i])) { // 数字压入栈int num = 0;while (isdigit(postfixExp[i]))num = num * 10 + (postfixExp[i++] - '0');stack[++top] = num;i--;}else if (postfixExp[i] == ' ')continue;}else { // 操作符,弹出栈顶的两个数进行计算,并将结果压入栈int b = stack[top--];int a = stack[top--];int result = calculate(a, b, postfixExp[i]);stack[++top] = result;}}return stack[top];int maichar infixExp[MAX_SIZE];printf("请输入中缀表达式:");fgets(infixExp, sizeof(infixExp), stdin); // 读取用户输入//将中缀表达式转换为后缀表达式char postfixExp[MAX_SIZE];infixToPostfix(infixExp, postfixExp);printf("后缀表达式为:%s\n", postfixExp);//计算后缀表达式的值并输出int result = evaluatePostfix(postfixExp);printf("计算结果为:%d\n", result);return 0;```这个简易计算器的实现基于栈的数据结构。
C语言实现简单计算器功能(1)

C语⾔实现简单计算器功能(1)本⽂为⼤家分享了C语⾔实现简单计算器功能的具体⽅法,供⼤家参考,具体内容如下这⼏天⼀直上控制语句,在学完if、switch和循环语句后,为了巩固所学知识点,想给学⽣出⼀道简单的计算器程序。
题⽬如下:通过所学的知识(选择语句、循环语句)完成⼀个简单的计算器编程,要求不许抄袭,只能⽤⾃⼰所学的知识点,不可引⽤⽹上⾃⼰的不懂的程序。
要求的格式如下图:要求以这样的⼀种格式进⾏输出,并能通过选择完成不同的功能。
如:选择1,完成整数相加功能,算完后⼜能回到该页⾯。
经过分析,我简单的写了⼀段代码,代码如下:#include <stdio.h>void main(){while(1) // while循环操作,实现计算机功能提⽰{int a = 0;int x = 0;int y = 0;int result = 0;printf("****欢迎使⽤计算器****\n");printf("[1] 完成两个整数相加\n");printf("[2] 完成两个整数相减\n");printf("[3] 完成两个整数相乘\n");printf("[4] 完成两个整数取整\n");printf("[5] 完成两个整数取余\n");printf("[0] 退出计算器系统\n");printf("请选择:");scanf("%d",&a);if(a < 0 || a > 5) // 判断输⼊的是否在0~5范围内,不在输出错误提⽰{printf("选择有误,请重新选择!\n");continue;}elseif(0 == a) // 当输⼊为0时需要退出系统{printf("欢迎下次使⽤!\n");break;}switch(a) // 使⽤switch语句进⾏对每个功能的具体操作{case 1: // 加法操作printf("请输⼊两个整数:");scanf("%d%d",&x,&y);result = x+y;printf("结果为:%d\n",result);break;case 2: // 减法操作printf("请输⼊两个整数:");scanf("%d%d",&x,&y);result = x-y;printf("结果为:%d\n",result);break;case 3: // 乘法操作printf("请输⼊两个整数:");scanf("%d%d",&x,&y);result = x*y;printf("结果为:%d\n",result);break;case 4: // 取整操作printf("请输⼊两个整数:");scanf("%d%d",&x,&y);result = x/y;printf("结果为:%d\n",result);break;case 5: // 取余操作printf("请输⼊两个整数:");scanf("%d%d",&x,&y);result = x%y;printf("结果为:%d\n",result);break;default:break;}}}这样就能简单完成⼀个两个整数的计算器功能。
C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)扬州大学C语言课程设计报告题目一个简易计算器的设计与实现班级学号姓名指导教师成绩老师评语:第 2 页共 14 页第 3 页共 14 页一、系统调试…………………………………………8,9,10,11二、课程设计体会总结………………………………8,9,10,111 课程设计目的(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 页示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。
C#制作计算器.doc

虽然电脑坏了,之前设计的计算器的代码也没了,但是重新又做了一个也没用了多久。
这说明放在脑子里的东西还是最安全的!其实做一个计算器也不难,第一先把界面设计好,这里要用到XAML语音,然后用C#将背后的处理函数写好就好了。
我做的这个计算器功能其实还是不是很完善的,但还是欢迎大家免费下载/share/link?shareid=470362&uk=2636013727,由于是用VS2012写的所以要求你的windows的.net在4.5,不然不能运行!以下便是实现的代码:xaml代码:<Window x:Class="计算器.MainWindow"xmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"ResizeMode="NoResize"Title="计算器"Height="385"Width="287.5"><Window.Resources><LinearGradientBrush x:Key="BlueButtonBackground"><GradientStop Color="Blue"Offset="0"/><GradientStop Color="PowderBlue"Offset="0.7"/></LinearGradientBrush></Window.Resources><Grid><TextBox Text="0"Name="text"Background="White"Height="41"FontSize="25"VerticalAlignment="Top"TextChanged="text_TextChanged" /><Grid Background="Beige"Margin="0,41,0,0"ShowGridLines="False" ><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Button Name="button1"Content="1"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="2"Grid.Column="0"Background="{StaticResource BlueButtonBackground}" Click="button1_Click"HorizontalAlignment="Left"Width="73"/><Button Name="button2"Content="2"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="2"Grid.Column="1"Background="{StaticResource BlueButtonBackground}"Click="button2_Click"/><Button Name="button3"Content="3"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="2"Grid.Column="2"Background="{StaticResource BlueButtonBackground}" Click="button3_Click" /><Button Name="button4"Content="4"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="1"Grid.Column="0"Background="{StaticResource BlueButtonBackground}" Click="button4_Click"/><Button Name="button5"Content="5"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="1"Grid.Column="1"Background="{StaticResource BlueButtonBackground}" Click="button5_Click"/><Button Name="button6"Content="6"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="1"Grid.Column="2"Background="{StaticResource BlueButtonBackground}" Click="button6_Click"/><Button Name="button7"Content="7"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="0"Grid.Column="0"Background="{StaticResource BlueButtonBackground}" Click="button7_Click"/><Button Name="button8"Content="8"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="0"Grid.Column="1"Background="{StaticResource BlueButtonBackground}" Click="button8_Click"/><Button Name="button9"Content="9"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="0"Grid.Column="2"Background="{StaticResource BlueButtonBackground}" Click="button9_Click"/><Button Name="button_point"Content="."FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="3"Grid.Column="0"Background="{StaticResource BlueButtonBackground}" Click="button_point_Click"/><Button Name="button0"Content="0"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="3"Grid.Column="1"Background="{StaticResource BlueButtonBackground}" Click="button0_Click"/><Button Name="button_equal"Content="="FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="3"Grid.Column="2"Background="Black"Click="button_equal_Click"/><Button Name="button_division"Content="/"FontWeight="Bold"FontSize="22" FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="0"Grid.Column="3"Background="Black"Click="button_division_Click" HorizontalAlignment="Right"Width="73"/><Button Name="button_multiple"Content="x"FontWeight="Bold"FontSize="22" FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="1"Grid.Column="3"Background="Black"Click="button_multiple_Click"/><Button Name="button_subtraction"Content="-"FontWeight="Bold"FontSize="22" FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="2"Grid.Column="3"Background="Black"Click="button_subtraction_Click"/> <Button Name="button_plus"Content="+"FontWeight="Bold"FontSize="22"FontFamily="Microsoft YaHei"Foreground="White"Grid.Row="3"Grid.Column="3"Background="Black"Click="button_plus_Click"/></Grid></Grid></Window>下面是实现功能的C#代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace计算器{///<summary>///MainWindow.xaml 的交互逻辑///</summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();MessageBox.Show("本计算器暂不支持负数计算!");}private string txt="0+";//定义一个字符串变量来存储数据static double temp = 0;//定义一个临时变量用来存储计算的数据string txt1;private void text_TextChanged(object sender, TextChangedEventArgs e){txt1 =txt.Substring(2);text.Text = txt1;}private void button1_Click(object sender, RoutedEventArgs e) {txt += "1";text.Text = txt;}private void button2_Click(object sender, RoutedEventArgs e) {txt += "2";text.Text = txt;}private void button3_Click(object sender, RoutedEventArgs e) {txt += "3";text.Text = txt;}private void button4_Click(object sender, RoutedEventArgs e) {txt += "4";text.Text = txt;}private void button5_Click(object sender, RoutedEventArgs e) {txt += "5";text.Text = txt;}private void button6_Click(object sender, RoutedEventArgs e) {txt += "6";text.Text = txt;}private void button7_Click(object sender, RoutedEventArgs e) {txt += "7";text.Text = txt;}private void button8_Click(object sender, RoutedEventArgs e){txt += "8";text.Text = txt;}private void button9_Click(object sender, RoutedEventArgs e){txt += "9";text.Text = txt;}private void button_plus_Click(object sender, RoutedEventArgs e){txt += "+";text.Text = txt;}private void button_subtraction_Click(object sender, RoutedEventArgs e) {txt += "-";text.Text = txt;}private void button_multiple_Click(object sender, RoutedEventArgs e) {txt += "x";text.Text = txt;}private void button_division_Click(object sender, RoutedEventArgs e) {txt += "/";text.Text = txt;}private void button_point_Click(object sender, RoutedEventArgs e){txt += ".";text.Text = txt;}private void button0_Click(object sender, RoutedEventArgs e)txt += "0";text.Text = txt;}private void button_equal_Click(object sender, RoutedEventArgs e){txt += "=";text.Text = txt;string str1="";//用来作为中间变量char[] sign = new char[txt.Length];//用来存储运算符int j = 0;double[] number = new double[txt.Length];//用来存储输入的数据char[] str3 = txt.ToCharArray();//将字符串txt存入字符型数组str3中//从txt字符串中分离数据和运算符for (int i = 0; i < txt.Length; i++){if (str3[i] <= '9' && str3[i] >= '0'||str3[i]=='.'){str1 += str3[i];//str3数组中的数字与运算符分离开来,str1作为中间变量}else{sign[j] = str3[i];//存入运算符number[j]=Convert.ToDouble(str1); ///将str1存入的数据转化为double型数据str1 = "";//将str清空便于下次存入j++;if (str3[i] == '='){int k = 0;int index = 0;double temp2 = 1;switch(sign[k]){case'+':{temp = number[0] + number[1]; index = k; break;}case'-':{temp = number[0] - number[1]; index = k; break;}case'x':temp=number[0]*number[1];break;case'/':temp=number[0]/number[1];break;}for (k = 1; sign[k] != '='; k++){switch (sign[k]){case'+':{temp = temp + number[k + 1]; index = k; break; }case'-':{temp = temp - number[k + 1]; index = k; break; }case'x'://考虑连乘情况{if (sign[k - 1] == '+'){temp = temp - number[k];temp2 = number[k] * number[k + 1];temp += temp2; break;}if (sign[k - 1] == '-'){temp = temp + number[k];temp2 = number[k] * number[k + 1];temp -= temp2; break;}if (sign[k - 1] == 'x'){if (sign[index] == '+'){temp = temp - temp2;temp2 = temp2 * number[k + 1];temp = temp + temp2;}if (sign[index] == '-'){temp = temp + temp2;temp2 = temp2 * number[k + 1];temp = temp - temp2;break;}if (sign[k - 1] == '/'){if (sign[index] == '+'){temp = temp - temp2;temp2 = temp2 * number[k +1]; temp = temp + temp2;}if (sign[index] == '-'){temp = temp + temp2;temp2 = temp2 * number[k + 1]; temp = temp - temp2;}}break;}case'/':{if (sign[k - 1] == '+'){temp = temp - number[k];temp2 = number[k] / number[k + 1]; temp += temp2; break;}if (sign[k - 1] == '-'){temp = temp + number[k];temp2 = number[k] / number[k + 1]; temp -= temp2; break;}if (sign[k - 1] == 'x'){if (sign[index] == '+'){temp = temp - temp2;temp2 = temp2 / number[k + 1]; temp = temp + temp2;}if (sign[index] == '-')temp = temp + temp2;temp2 = temp2 / number[k + 1]; temp = temp - temp2;}break;}if (sign[k - 1] == '/'){if (sign[index] == '+'){temp = temp - temp2;temp2 = temp2 / number[k + 1]; temp = temp + temp2;}if (sign[index] == '-'){temp = temp + temp2;temp2 = temp2 / number[k + 1]; temp = temp - temp2;}break;}break;}}}}}}txt= "0+"+Convert.ToString(temp); txt1 = txt.Substring(2);text.Text = txt1;}}}。
c简单计算器代码

}
break;
case IDC_NUM0:
{
GetDlgItemText(hwnd,IDC_TEXT,num,sizeof(num));
wsprintf(num,"%s0",num);
SetDlgItemText(hwnd,IDC_TEXT,num);
}
break;
case IDC_NUM1:
SetDlgItemText(hwnd,IDC_TEXT,num);
}
break;
case IDC_NUM8:
{
GetDlgItemText(hwnd,IDC_TEXT,num,sizeof(num));
wsprintf(num,"%s8",num);
SetDlgItemText(hwnd,IDC_TEXT,num);
}
else{
n3=n1+n2;
//ltoa()
//ltoa(n3,num3,16);
//wsprintf(num3,"%f",n3);
//MessageBox(hwnd,num3,num3,MB_OK);
gcvt(n3,c,num3);
SetDlgItemText(hwnd,IDC_NUM3,num3);
int i=strlen(num);
if(num[i-1]=='*'){
break;
}
wsprintf(num,"%s*",num);
SetDlgItemText(hwnd,IDC_TEXT,num);
}
break;
case IDC_CHU:
{
GetDlgItemText(hwnd,IDC_TEXT,num,sizeof(num));
C语言编写一个计算器界面(可视化界面和多功能)

C语⾔编写⼀个计算器界⾯(可视化界⾯和多功能)⽬录引⾔计算器总结引⾔在⼤学期间,C 语⾔或者数据结构等课程,⽼师会要求学⽣编写⼀个⼩项⽬练⼿,或者期末编写⼀个⼩软件等课程设计。
今天在电脑看到⼤⼀学C语⾔时,实验课上写的计算器功能,挺有意思。
所以在此分享给学C语⾔的学弟学妹,记得收藏保留!计算器简单版本计算器,主要实现的是简单两个数的加法,减法,乘法,除法,求余功能。
⽤户可以在主菜单选择需要计算的功能,然后根据⽤户输⼊的数字,进⾏计算,输出结果。
⾸先,我们定义五个⽅法,实现两个数的加法,减法,乘法,除法,求余功能。
代码如下:// 加法float add(float a, float b) {return a + b;}// 减法float sub(float a, float b) {return a - b;}// 乘法float mul(float a, float b) {return a * b;}// 除法float mod(float a, float b) {return a / b;}// 求余int com(int a, int b) {return a % b;}然后定义⼀个打印主菜单界⾯的函数,使⽤简介美观的菜单界⾯,供⽤户选择要计算的功能,代码如下:// 打印主功能菜单void printMenu() {// 清屏// system("cls");printf("|----------------------- 计算器 -----------------------|\n");printf("| |\n");printf("| By -- 陈⽪的JavaLib |\n");printf("| |\n");printf("|---------------------- 1:加法 -----------------------|\n");printf("|---------------------- 2:减法 -----------------------|\n");printf("|---------------------- 3:乘法 -----------------------|\n");printf("|---------------------- 4:除法 -----------------------|\n");printf("|---------------------- 5:求余 -----------------------|\n");printf("|---------------------- 6:退出 -----------------------|\n");printf("| |\n");printf("|----------------------- 计算器 -----------------------|\n");}最后,我们在主函数 main 中,定义⼀个 while 循环代码块,不断读取⽤户输⼊的内容,进⾏数字计算,代码如下:int main() {// 选择的功能int select = 0;// 定义算术的两个数float a, b;while (select != 6){select = 0;// 打印主菜单printMenu();// 只允许选择菜单栏内的数字,不是则重新选择while (select < 1 || select > 6) {printf("请输⼊菜单功能(1-6):");scanf("%d", &select);}if (6 == select) {printf("\n|----------------- 欢迎使⽤计算器!再见!-----------------|\n"); return 0;}printf("\n请输⼊两个数(⽤空格隔开两个数):");scanf("%f %f", &a, &b);switch (select) {case 1:printf("%f+%f=%f\n\n", a, b, add(a, b));break;case 2:printf("%f-%f=%f\n\n", a, b, sub(a, b));break;case 3:printf("%f*%f=%f\n\n", a, b, mul(a, b));break;case 4:printf("%f/%f=%f\n\n", a, b, mod(a, b));break;case 5:printf("%f/%f=%d\n\n", a, b, com((int)a, (int)b));break;case 6:default:break;}}}下⾯我们演⽰⼏个例⼦,能更加直观体验计算器的功能:菜单功能选择错误,会提⽰重新选择加法除法退出简单版本计算器,完整代码如下:#include <stdio.h>#include <stdlib.h>// 加法float add(float a, float b) {return a + b;}// 减法float sub(float a, float b) {return a - b;}// 乘法float mul(float a, float b) {return a * b;}// 除法float mod(float a, float b) {return a / b;}// 求余int com(int a, int b) {return a % b;}// 打印主功能菜单void printMenu() {// 清屏// system("cls");printf("|----------------------- 计算器 -----------------------|\n");printf("| |\n");printf("| By -- 陈⽪的JavaLib |\n"); printf("| |\n");printf("|---------------------- 1:加法 -----------------------|\n");printf("|---------------------- 2:减法 -----------------------|\n");printf("|---------------------- 3:乘法 -----------------------|\n");printf("|---------------------- 4:除法 -----------------------|\n");printf("|---------------------- 5:求余 -----------------------|\n");printf("|---------------------- 6:退出 -----------------------|\n");printf("| |\n");printf("|----------------------- 计算器 -----------------------|\n");}/*** 简单版本计算器功能 By -- 陈⽪的JavaLib* @return*/int main() {// 选择的功能int select = 0;// 定义算术的两个数float a, b;while (select != 6){select = 0;// 打印主菜单printMenu();// 只允许选择菜单栏内的数字,不是则重新选择while (select < 1 || select > 6) {printf("请输⼊菜单功能(1-6):");scanf("%d", &select);}if (6 == select) {printf("\n|----------------- 欢迎使⽤计算器!再见!-----------------|\n");return 0;}printf("\n请输⼊两个数(⽤空格隔开两个数):");scanf("%f %f", &a, &b);switch (select) {case 1:printf("%f+%f=%f\n\n", a, b, add(a, b));break;case 2:printf("%f-%f=%f\n\n", a, b, sub(a, b));break;case 3:printf("%f*%f=%f\n\n", a, b, mul(a, b));break;case 4:printf("%f/%f=%f\n\n", a, b, mod(a, b));break;case 5:printf("%f/%f=%d\n\n", a, b, com((int)a, (int)b));break;case 6:default:break;}}}总结在⼤学期间,如果是计算机类的专业,⼀般都会学习 C 语⾔,作为编程⼊门语⾔,⼤家⼀定要学习好此门语⾔,⽽且如果学好了,其实学习其他编程语⾔就很容器上⼿的,不同语⾔其实⼤同⼩异,只要你编程思维提升了,基础语法掌握了,才能学习更加深⼊的知识。
C#编写简易计算器(附源代码)超详细

超详细因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow,按键0~9 为Button 控件,并将其name分别修改为btn_O、btn_1、btn_2、btn_3、btn_4、btn_5、btn_6、btn_7、btn_8、btn_9;按键【负数】的name值修改为btn_sign,按键【.】的name修改为btn_dot,按键【+ - * / 】的name 值分别修改为btn_add、btn_sub、btn_mul、btn_div,按键【=】的name值修改为btn_equ,按键【倒数】的name值修改为btn_rev,按键【平方】的name值修改为btn_sqr,按键【开方】的name值修改为btn_sqrt。
右边的计算器图片空间是PictureBox ,作者博客控件是LinkLabel ,可以不添加,以上所有控件均可按照需求添加,只保留自己需要的按钮控件和textbox控件即可。
三、代码部分(含解释),采用switch多分支语句编写using System;using System.Drawing;using System.Collections;using ponentModel;usingusing System.Data;namespace Calc{/// <summary>///温柔一刀C#简易计算器的实现/// </summary>public class CalcFormForm{private Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btn_5;private Button btn_6;private Button btn_7;private Button btn_8;private Button btn_9;private Button btn_add;private Button btn_sub;private Button btn_mul;private Button btn_div;private Button btn_sqrt;private Button btn_sign;private Button btn_equ;private Button btn_dot;private Button btn_rev;private TextBox txtShow;private Button btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;/// <summary>/// 必需的设计器变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易计算器C#界面设计与代码简易计算器是用vs2008编译的c#程序,仅供参考,存在不足之处,望大家见谅!windows界面设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace简易计算器{public partial class Form1 : Form{public Form1(){InitializeComponent();}private int opMain = 0; // 运算类型,其中1(加法) 2(减法) 3(乘法) 4(除法)private double mainNum1 = 0; // 存储第一个数private double mainNum2 = 0; // 存储第二个数private bool isSecond= false; // 用来判断输入的是第一个还是第二个数private bool isDone = false; // 用来判断是否按了等于按钮private bool isDecimal = false; // 用来判断是否有小数private bool isNokeydown = false;// 用来判断是否没输入第二个数而按了"="号键private bool isKeyupclear= true;//用来判断是否按了clear键,程序开始前默认按了;public void setText(string textest) //设置文本框的值{if (textest.Equals("clear")){textBox1.Text = "0.";isSecond = false;isDone = false;isDecimal = false;isKeyupclear = true;}else{if (isSecond){textBox1.Text = textest;isSecond = false;isDecimal = false;}else{if (isDone){textBox1.Text = textest;isDone = false;}else{if (isKeyupclear) //对是否按下clear 键的判断{textBox1.Text = textest;isKeyupclear = false;}elsetextBox1.Text += textest;}}}btnEqual.Select(); //设置"="号的焦点}public void Calc(double num1, double num2, int op){double answer = 0;switch (op) //判断所进行的运算{case 1:answer = num1 + num2;break;case 2:answer = num1 - num2;break;case 3:answer = num1 * num2;break;case 4:answer = num1 / num2;break;case 5:answer = num1 % num2;break;}setText(answer.ToString()); //显示结果}//切换正负private void changeSign()double storNum;if (textBox1.Text.Length > 0){storNum = double.Parse(textBox1.Text);storNum *= -1;textBox1.Text = storNum.ToString();}btnEqual.Select(); //设置"="号的焦点}//执行运算private void doEquals(){if (isNokeydown) //判断已经输入第二个数后按了"="号键{mainNum2 = double.Parse(textBox1.Text);setText("clear");Calc(mainNum1, mainNum2, opMain);isDone = true;isNokeydown = false;}}//设置运算类型private void setOperator(int operation){if (textBox1.Text.Length > 0){opMain = operation;mainNum1 = double.Parse(textBox1.Text);isSecond = true;isDone = false;isNokeydown = true;btnEqual.Select(); //设置"="号的焦点}}//设置小数点private void setDecimal()if (!isDecimal){setText(".");isDecimal = true;}btnEqual.Select(); //设置"="号的焦点}private void btn1_Click(object sender, EventArgs e) {setText("1");}private void btn2_Click(object sender, EventArgs e) {setText("2");}private void btn3_Click(object sender, EventArgs e) {setText("3");}private void btn4_Click(object sender, EventArgs e) {setText("4");}private void btn5_Click(object sender, EventArgs e) {setText("5");}private void btn6_Click(object sender, EventArgs e) {setText("6");}private void btn7_Click(object sender, EventArgs e) {setText("7");}private void btn8_Click(object sender, EventArgs e){setText("8");}private void btn9_Click(object sender, EventArgs e){setText("9");}private void btn0_Click(object sender, EventArgs e){setText("0");}private void btnPoint_Click(object sender, EventArgs e){setDecimal();}private void btnSubtract_Click(object sender, EventArgs e) {changeSign();}private void btnEqual_Click(object sender, EventArgs e){doEquals();}private void btnAdd_Click(object sender, EventArgs e){setOperator(1);}private void btnSub_Click(object sender, EventArgs e){setOperator(2);}private void btnMulti_Click(object sender, EventArgs e){setOperator(3);}private void btnDivide_Click(object sender, EventArgs e){setOperator(4);}private void btnC_Click(object sender, EventArgs e){isSecond = false;setText("clear");}private void btnSqrt_Click(object sender, EventArgs e){doSquart();}private void btnBackspace_Click(object sender, EventArgs e) {string old = textBox1.Text;if (old.Length > 1 && old != "0.")textBox1.Text = old.Substring(0, old.Length - 1);elsetextBox1.Text = "0.";}private void doSquart(){double storNum;storNum = double.Parse(textBox1.Text);if (storNum > 0){storNum = Math.Sqrt(storNum);textBox1.Text = storNum.ToString();}elsetextBox1.Text = "负数不能开平方。
";btnEqual.Select(); //设置"="号的焦点}private void btnπ_Click(object sender, EventArgs e){setText("3.1415926");}private void btnPercentage_Click(object sender, EventArgs e) {setOperator(5);}private void btnReciprocal_Click(object sender, EventArgs e) {doreciprocal();}private void doreciprocal(){double storNum;storNum = double.Parse(textBox1.Text);if (storNum != 0){storNum = 1 / storNum;textBox1.Text = storNum.ToString();}elsetextBox1.Text = "除数不能为零。