加减乘除计算器
JavaFx-编写一个简单的计算器,实现加减乘除

JavaFx-编写⼀个简单的计算器,实现加减乘除0.题⽬描述编写⼀个简单的计算器,完成加、减、乘、除的功能1.源代码import javafx.application.Application;import javafx.stage.Stage;import yout.HBox;import yout.BorderPane;import bel;import javafx.scene.control.TextField;import javafx.scene.control.Button;import javafx.scene.Scene;import javafx.geometry.Insets;import javafx.geometry.Pos;public class Test2 extends Application {private TextField num1 = new TextField();private TextField num2 = new TextField();private TextField res = new TextField();private Button btAdd = new Button("Add");private Button btSub = new Button("Subtract");private Button btMul = new Button("Multiply");private Button btDiv = new Button("Divide");@Overridepublic void start(Stage primaryStage) {HBox top = new HBox();top.setAlignment(Pos.CENTER);top.setPadding(new Insets(5,10,5,10));top.setSpacing(10);top.getChildren().addAll(new Label("Number1"),num1,new Label("Number2"),num2,new Label("Result"),res);HBox bottom = new HBox();bottom.setAlignment(Pos.CENTER);bottom.setPadding(new Insets(5,10,5,10));bottom.setSpacing(10);bottom.getChildren().addAll(btAdd,btSub,btMul,btDiv);BorderPane pane = new BorderPane();pane.setTop(top);pane.setBottom(bottom);btAdd.setOnAction(e -> Add());btSub.setOnAction(e -> Sub());btMul.setOnAction(e -> Mul());btDiv.setOnAction(e -> Div());Scene scene = new Scene(pane, 900, 80);primaryStage.setResizable(false);primaryStage.setScene(scene);primaryStage.setTitle("Calculator");primaryStage.show();}private void Add() {double n1 = Double.parseDouble(num1.getText());double n2 = Double.parseDouble(num2.getText());res.setText(String.format("%.2f", n1+n2));}private void Sub() {double n1 = Double.parseDouble(num1.getText());double n2 = Double.parseDouble(num2.getText());res.setText(String.format("%.2f", n1-n2));}private void Mul() {double n1 = Double.parseDouble(num1.getText());double n2 = Double.parseDouble(num2.getText());res.setText(String.format("%.2f", n1*n2));}private void Div() {double n1 = Double.parseDouble(num1.getText());double n2 = Double.parseDouble(num2.getText());res.setText(String.format("%.2f", n1/n2));}public static void main(String[] args) {unch(args);}}2.运⾏结果3.技术总结 上半部分放⼊⼀个HBox中,下半部分放⼊⼀个HBox中。
计算器使用方法

计算器使用方法计算器是一种常用的工具,尤其在统计学领域。
无论是进行简单的计算,还是处理复杂的统计数据,计算器都可以发挥重要的作用。
下面是统计学中常用的计算器使用方法。
第一步:了解计算器基础功能在开始使用计算器之前,首先需要了解计算器的基本功能。
计算器通常拥有加减乘除四则运算,以及开平方、倒数、百分比等功能。
通过熟悉计算器的基础功能,可以更好地应用它们进行统计学计算。
第二步:使用基本计算功能计算器可以进行基本的四则运算,如加法、减法、乘法和除法。
这些基本计算功能在统计学中经常使用,例如计算平均值、求和、标准差等。
使用计算器进行基本计算时,需要按照正确的数学运算规则进行操作,以确保结果的准确性。
第三步:使用科学计数法和指数运算统计学中经常处理的数据量很大或很小,因此使用科学计数法和指数运算可以更方便地进行计算。
计算器通常提供科学计数法和指数运算的功能,通过合理使用这些功能,可以避免计算过程中出现数字溢出或精度丢失的问题。
第四步:使用函数和变量计算器通常还提供一些常见函数和变量,用于解决统计学中的特定问题。
例如,计算器可以提供计算阶乘、组合数、排列数等的函数。
此外,计算器还可以存储常用的变量,使得重复计算时更加方便。
熟悉这些函数和变量的使用方法,可以提高统计学计算的效率。
第五步:使用统计学专用计算器除了普通计算器,还有一些专门针对统计学需求设计的计算器。
这些计算器通常具有更多的统计学功能,如假设检验、方差分析、回归分析等。
熟悉并掌握这些专业计算器的使用方法,可以帮助完成更加复杂的统计学计算任务。
第六步:了解错误和误差处理在统计学计算中,错误和误差是难以避免的。
因此,学会处理计算中的错误和误差是非常重要的。
计算器通常会在计算过程中给出提示或错误信息,熟悉这些提示和错误信息的含义,可以及时发现和修正错误,提高计算的准确性。
第七步:熟练操作和反复练习使用计算器需要一定的熟练度,只有通过反复练习才能真正掌握。
用java代码写的简易计算器(可以实现基本的加减乘除功能)

⽤java代码写的简易计算器(可以实现基本的加减乘除功能)package A;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.*;public class Calcular3 extends JFrame implements ActionListener,MouseListener{private int m1=0,n=0;//private double m2=0;//运算的数private int flag=0;JFrame f;JPanel p1,p2,p3;JTextField t;JButton b1[]=new JButton[18];String b[]= {"1","2","3","4","5","6","7","8","9","0","清空","退格",".","=","+","-","*","/"};public Calcular3(){f=new JFrame("计算器");t=new JTextField(35);p1=new JPanel();p2=new JPanel();p3=new JPanel();f.setBounds(100, 100, 400, 200);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.EAST);p2.setLayout(new GridLayout(5,3));p3.setLayout(new GridLayout(4,1));p1.add(t);for(int i=0;i<14;i++) {b1[i]=new JButton(b[i]);p2.add(b1[i]);b1[i].addActionListener(this);}for(int i=14;i<18;i++) {b1[i]=new JButton(b[i]);p3.add(b1[i]);b1[i].addActionListener(this);}/*for(int i=0;i<18;i++) {b1[i].addActionListener(this);}*/f.setVisible(true);}//实现接⼝的⽅法public void mouseClicked(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void actionPerformed(ActionEvent e) {String str="";int i;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {if(i==9) {n=n*10;}else {n=n*10+i+1;}str=String.valueOf(n);//整形n转换成字符串strt.setText(str);//显⽰到⽂本框上}}for(i=14;i<18;i++) {//+、-、*、/if(e.getSource()==b1[i]) {//匹配运算符m1=Integer.parseInt(t.getText());if(flag==15) {m2=m1+m2;}else if(flag==16) {m2=m1-m2;}else if(flag==17) {m2=m1*m2;}else if(flag==18) {m2=m1/m2;}else m2=m1;//若⽆连续的运算符运算,保存当前数据到m2 if(i==14) flag=15;else if(i==15) flag=16;else if(i==16) flag=17;else flag=18;str=String.valueOf(b[i]);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据break;//找到匹配数据退出循环}}if(e.getSource()==b1[13]) {//=m1=Integer.parseInt(t.getText());if(flag==15) {m2=m2+m1;}else if(flag==16) {m2=m2-m1;}else if(flag==17) {m2=m2*m1;}else if(flag==18) {m2=m2/m1;}else m2=m1;str=String.valueOf(m2);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据flag=0;//flag还原0,表明没有未处理的运算符}if(e.getSource()==b1[10]) {//各变量变为0 清空m1=0;m2=0;flag=0;n=0;t.setText("0");//显⽰到⽂本框上}if(e.getSource()==b1[11]) {//退格m1=(int)(Double.parseDouble(t.getText())/10);n=m1;str=String.valueOf(m1);t.setText(str);}if(e.getSource()==b1[12]) {//⼩数点m1=Integer.parseInt(t.getText());str=String.valueOf(m1+b[12]);t.setText(str);//显⽰到⽂本框上int j=0;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {j++;m2=Math.pow(0.1, j)*Integer.parseInt(b[i]);str=String.valueOf(m1+m2);t.setText(str);//显⽰到⽂本框上}}}}//主函数public static void main(String[] args) {new Calcular3();}}。
计算器加减乘除二进制计算代码

计算器加减乘除二进制计算代码 #定义函数,实现二进制加法def binary_addition(a, b):carry = 0result = ''# 将两个二进制数的位数对齐a = a.zfill(len(b))b = b.zfill(len(a))for i in range(len(a) - 1, -1, -1):sum = int(a[i]) + int(b[i]) + carryif sum >= 2:carry = 1sum -= 2else:carry = 0result = str(sum) + resultif carry == 1:result = '1' + resultreturn result# 定义函数,实现二进制减法def binary_subtraction(a, b):borrow = 0result = ''# 将两个二进制数的位数对齐a = a.zfill(len(b))b = b.zfill(len(a))for i in range(len(a) - 1, -1, -1): diff = int(a[i]) - int(b[i]) - borrow if diff < 0:borrow = 1diff += 2else:borrow = 0result = str(diff) + resultreturn result# 定义函数,实现二进制乘法def binary_multiplication(a, b):result = '0'# 逐位计算乘积for i in range(len(b) - 1, -1, -1): if b[i] == '1':temp = afor j in range(i, len(b) - 1):temp += '0'result = binary_addition(result, temp)return result# 定义函数,实现二进制除法def binary_division(dividend, divisor):quotient = ''remainder = dividend# 逐位进行除法运算while len(remainder) >= len(divisor):temp = divisortemp_quotient = '1'# 将除数左移,直到大于被除数while len(temp) < len(remainder):temp += '0'temp_quotient += '0'# 减去除数,得到商和余数remainder = binary_subtraction(remainder, temp)quotient = binary_addition(quotient, temp_quotient)return quotient, remainder```上述代码定义了四个函数,分别对应二进制加减乘除四种基本运算。
htmljs实现简单的计算器代码(加减乘除)

下面小编就为大家带来一篇 html+js 实现简单的计算器代码 (加减乘除 ) 。
小编觉得挺不错的,现在就分享给大家,也给大家做个参考。
html+js 实现简单的计算器代码(加减乘除 )<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><table> <tr> <td><input type="button"value="add" onclick="setOp('+', 'add');"/></td> <td><input type="button"value="miner"onclick="setOp('-', 'miner');"/></td> <td><input type="button"value="times"onclick="setOp('*', 'times');"/></td> <td><input type="button"value="divide"onclick="setOp('/', 'divide');"/></td> </tr></table><table id="tb_calc" style="display:none;"> <tr> <td> <input id="x" type="text" style="width:100px" value="" name="x" /></td> <td> <lable id="op" name="op"></lable> </td> <td> <input id="y" type="text" style="width:100px"value="" name="y" /> </td> <td> <input id="opTips" type="button" value="" onclick="calc();"/> </td> <td> <lable id="z" name="z"></lable> </td> </tr></table><script type="application/javascript"> function setOp(op, opTips) { var tb=document.getElementById("tb_calc"); tb.style.display = "none"; document.getElementById("x").value = ""; document.getElementById("y").value = ""; document.getElementById("z").innerText = ""; document.getElementById("op").innerText = op; document.getElementById("opTips").value = opTips; tb.style.display = "block"; } function calc() { var x = parseInt(document.getElementById("x").value); var y = parseInt(document.getElementById("y").value); var op = document.getElementById("op").innerText; var z = ""; switch(op) { case '+': z = x + y; break; case '-': z = x - y; break; case '*': ; z = x * y; break; case '/': ; z = x / y; break; default: z = ''; } console.log(x, op, y, '=', z); document.getElementById("z").innerText = z; }</script></body></html>以上这篇 html+js 实现简单的计算器代码 (加减乘除 ) 就是小编分享给大家的全部内容了,希望能给大家一个参考。
简易计算器(加减乘除幂e)

此计算机包含+,-,/,*,!,sin,tan,cos,^,e。
#include<iostream.h>#include<math.h>#include <iomanip.h>#include<stdlib.h>#define max 100#define MaxOp 100struct //设定运算符优先级{char ch; //运算符int pri; //优先级}lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6},{'^', 7},{'e',7},{'!',7},{'s',7},{'t',7},{'c',7}},rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1},{'^', 6},{'e',6},{'!',6},{'s',6},{'t',6},{'c',6}};int leftpri(char op) //求左运算符op的优先级{int i;for(i=0;i<MaxOp;i++)if(lpri[i].ch==op)return lpri[i].pri;}int rightpri(char op) //求右运算符op的优先级{int i;for(i=0;i<MaxOp;i++)if(rpri[i].ch==op)return rpri[i].pri;}int InOp(char ch) //判断ch是否运算符{if(ch=='('||ch==')'||ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='^'| |ch=='e'||ch=='!'||ch=='t'||ch=='s'||ch=='c')return 1;elsereturn 0;}int precede(char op1,char op2) //op1和op2运算符的比较结果{if(leftpri(op1)==rightpri(op2))return 0;else if(leftpri(op1)<rightpri(op2))return -1;elsereturn 1;}void trans(char*exp,char postexp[]) //将算术表达式exp转换为后缀表达式postexp{struct{char data[max]; //存放运算符int top; //栈指针}op; //定义运算符栈int i=0; //i作为postexp的下标op.top=-1;op.top++;op.data[op.top]='='; //将“=”进栈char *t;cout<<"-----------------------------------------------------------------"<<endl;cout<<"当前符号输入区 op栈输出区"<<endl;cout<<"-----------------------------------------------------------------"<<endl;while(*exp!='\0') //*exp未扫描完时循环{if(!InOp(*exp)) //为数字字符情况下{t=exp;while(*exp>='0'&&*exp<='9'||*exp=='.') //判定为数字{cout<<*exp; //输出中缀表达式的头指针postexp[i++]=*exp;exp++;}cout<<"\t";cout.setf(ios::left);cout<<setw(20);cout<<t;for(int n=1;n<=op.top;n++)cout<<op.data[n];cout<<"\t\t ";for(n=0;n<i;n++){cout<<postexp[n];if(!(postexp[n]>='0'&&postexp[n]<='9')&&postexp[n]!=' ')cout<<' ';}cout<<endl;postexp[i++]=' '; //用' '标识一个数值串结束}else{int n;switch(precede(op.data[op.top],*exp)){case -1: //为运算符情况下t=exp;op.top++;op.data[op.top]=*exp;cout<<*exp;if(*exp=='s')cout<<"in";if(*exp=='c')cout<<"os";if(*exp=='t')cout<<"an";cout<<"\t";exp++;cout.setf(ios::left);cout<<setw(20);cout<<t;for(n=1;n<=op.top;n++)cout<<op.data[n];cout<<"\t\t ";for(n=0;n<i;n++){cout<<postexp[n];if(!(postexp[n]>='0'&&postexp[n]<='9')&&postexp[n]!=' ')cout<<' ';}cout<<' ';cout<<endl;break;case 0: //只有括号满足这一情况op.top--; //此时将退栈cout<<*exp;if(*exp=='s')cout<<"in";if(*exp=='c')cout<<"os";if(*exp=='t')cout<<"an";cout<<"\t";exp++;cout.setf(ios::left);cout<<setw(20);cout<<t;for(n=1;n<=op.top;n++)cout<<op.data[n];cout<<"\t\t ";for(n=0;n<i;n++){cout<<postexp[n];if(!(postexp[n]>='0'&&postexp[n]<='9')&&postexp[n]!=' ')cout<<' ';}cout<<endl;break;case 1: //栈顶运算符优先级高于当前运算符postexp[i++]=op.data[op.top];op.top--;break;}}}while(op.data[op.top]!='=') //此时exp扫描完毕,退栈到'='为止{postexp[i++]=op.data[op.top];op.top--;}postexp[i]='\0'; //给postexp表达式添加结束标识cout<<"\t\t\t\t\t\t";for(int p=0;postexp[p]!='\0';p++){cout<<postexp[p];if(!(postexp[p]>='0'&&postexp[p]<='9')&&postexp[p]!=' ') cout<<' ';}cout<<endl;}/////////////////////////////////////////////////////////////////////int check(char *exp){int i=0,flag=1;while(exp[i]!='\0') //判断运算符号是否表达正确{if(exp[i]>='0' && exp[i]<='9' || exp[i]=='.' || exp[i]=='-' || exp[i]=='+' || exp[i]=='*' || exp[i]=='(' || exp[i]==')'|| exp[i]=='/' || exp[i]=='^' ||exp[i]=='!'|| exp[i]=='d' || exp[i]=='s' || exp[i]=='c' || exp[i]=='t' || exp[i]=='e');else flag=0;if(exp[0]=='+'||exp[0]=='-'||exp[0]=='*'||exp[0]=='/'||exp[0]=='^ '||exp[0]=='.'||exp[0]=='!') //表达式第一项不出现加减乘除flag=0;if(i!=0&&(exp[i]=='s' || exp[i]=='c' || exp[i]=='t' || exp[i]=='e')&&(exp[i-1]>='0' && exp[i-1]<='9' || exp[i-1]=='.'))flag=0;if((exp[i]=='+'||exp[i]=='-'||exp[i]=='*'||exp[i]=='/'||exp[i]==' ^'||exp[i]=='!')&& //'+'、'-'、'*'、'/'、'^'等运算符号后面必须接一个数值或其他!(exp[i+1]>='0' && exp[i+1]<='9'|| exp[i+1]=='e' || exp[i+1]=='s'|| exp[i+1]=='c' || exp[i+1]=='t' || exp[i+1]=='('))flag=0;i++;}return flag;}///////////////////////////////////////////////////////////////////// ///////double compvalue(char *postexp) //计算后缀表达式的值{struct{double data[max]; //存放数值int top; //栈指针}st; //定义数值栈int k;double d1=0,d,a,b,c;st.top=-1;while(*postexp!='\0') //postexp字符串未扫描完时循环{switch(*postexp){case'+': //判定为'+'号a=st.data[st.top];st.top--; //退栈取数值ab=st.data[st.top];st.top--; //退栈取数值bc=a+b; //计算cst.top++;st.data[st.top]=c; //将计算结果进栈break;case'-': //判定为'-'号a=st.data[st.top];st.top--; //退栈取数值ab=st.data[st.top];st.top--; //退栈取数值bc=b-a; //计算cst.top++;st.data[st.top]=c; //将计算结果进栈break;case'*': //判定为'*'号a=st.data[st.top];st.top--; //退栈取数值ab=st.data[st.top];st.top--; //退栈取数值bc=a*b; //计算cst.top++;st.data[st.top]=c; //将计算结果进栈break;case'/': //判定为'/'号a=st.data[st.top];st.top--; //退栈取数值ab=st.data[st.top];st.top--; //退栈取数值bif(a!=0){c=b/a; //计算cst.top++;st.data[st.top]=c; //将计算结果进栈}else{cout<<"\n\t除零错误\n";exit(0);//异常退出}break;case'^': //判定为'^'号int i;a=st.data[st.top];st.top--; //退栈取数值ab=st.data[st.top];st.top--; //退栈取数值bc=1; //计算cfor(i=0;i<a;i++)c*=b;st.top++;st.data[st.top]=c; //将计算结果进栈break;case'e': //判定为'exp'号a=st.data[st.top];st.top--; //退栈取数值ac=exp(a); //计算cst.top++;st.data[st.top]=c; //将计算结果进栈break;case'!': //判定为'^'号a=st.data[st.top];st.top--; //退栈取数值a c=1; //计算cfor(i=1;i<a+1;i++)c=c*i;st.top++;st.data[st.top]=c; //将计算结果进栈break;case 't':a=st.data[st.top];st.top--;c=tan(a);st.top++;st.data[st.top]=c;break;case 's':a=st.data[st.top];st.top--;c=sin(a);st.top++;st.data[st.top]=c;break;case 'c':a=st.data[st.top];st.top--;c=cos(a);st.top++;st.data[st.top]=c;break;default://处理数字字符d=0;while(*postexp>='0'&&*postexp<='9'||*postexp=='.') //判定为数字字符{if(*postexp>='0'&&*postexp<='9'){d=10*d+*postexp-'0';//将连续的数字字符转换成对应的数值存放到d中postexp++;}else{*postexp++;i=0;while(*postexp>='0'&&*postexp<='9'){d1=10*d1+*postexp-'0';*postexp++;i++;}for(k=0;k<i;k++)d1=d1/10;}}d=d+d1;d1=0;st.top++;st.data[st.top]=d;break;}postexp++; //继续处理其他字符}return(st.data[st.top]);}int check2(char *postexp) ///判断是否括号对称{while(*postexp!='\0'){if(*postexp=='('||*postexp==')')return 1;*postexp++;}return 0;}void main(){cout<<"----------------------------------------------"<<endl;cout<<"本计算器包含的运算符有:"<<endl;cout<<"+ - * /"<<endl;cout<<"^ !"<<endl;cout<<"sin() cos() tan() exp()"<<endl;cout<<"(s表示sin,c表示cos,t表示tan,e表示exp)\n"<<endl;cout<<" By WeizhongYoung"<<endl;cout<<"------------------------------------------------"<<endl;char h='y';while(h=='y'||h=='Y') //当st=='y'/'Y'时循环{char exp[max],postexp[max];cout<<"请输入表达式:";cin>>exp;cout<<endl;if(!check(exp)&&!check2(postexp)) //判断是否输入错误{cout<<"输入有误,请重新输入!"<<endl;continue;}else{cout<<"输出中缀表达式:"<<exp<<endl;trans(exp,postexp);cout<<"输出n逆波兰表达式:";for(int p=0;postexp[p]!='\0';p++){cout<<postexp[p];if(!(postexp[p]>='0'&&postexp[p]<='9')&&postexp[p]!=' ')cout<<' ';}cout<<endl;cout<<"输出表达式的值为:"<<compvalue(postexp)<<endl;}cout<<"是否继续运行(Y,N),输入Y/y继续,输入n/N退出: "; //用户输入是否要继续使用计算器cin>>h;cout<<endl;}exit(0);}。
加减乘除带括号的计算器代码

28
string = format(string)
29 if expression.count('/')==1:
30
x,y=expression.split('/')
31
div_result =str(float(x)/float(y))
32
string = string.replace(expression,div_result)
17 print('表达式错误,含非法字符')
18 chech_result = False
19 return chech_result
20 def calc_mul_div(string):
21 regular = '\d+\.?\d*[*/]\d+\.?\d*'
22 while re.findall(regular,string):
33
string = format(string)
34 return string
35 def cal_add_sub(string):
36 add_regular = '[\-]?\d+\.?\d*\+[\-]?\d+\.?\d*'
37 sub_regular = '[\-]?\d+\.?\d*\-[\-]?\d+\.?\d*'
请求出错错误代码400请尝试刷新页面重试
代码如下
加减乘除带括号的计算器代码
1 import re
2 def form_at(string):
3 string = string.replace('++','+')
四则运算计算器

前言本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。
本次课程设计以实现一个基本功能完善,界面友好,操作简便易行的计算器为最终目的。
通过对具有加减乘除基本功能的计算器的设计实现,学会使用汇编语言实现输入输出模块的设计,模块合理调用的设计,加减乘除运算的判断以及退出程序的判断的设计。
通过对各种指令的合理使用,熟悉并加深对各种指令的用法。
学会使用汇编语言设计各个功能模块。
当实现各个程序模块后,学会通过程序的调用最终实现一个具有基本计算功能的简单计算器。
1中文摘要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
设计当用户根据提示信息输入一个算式后,按下enter键或是‘=’符号键时,程序依据输入的算式进行计算,并将结果显示在屏幕上。
如果用户输入错误,则返回,提示信息让用户重新输入算式,当用户按下Q或q键时退出程序。
在各个子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具有简单运算功能的计算关键字:计算器、四则运算、进位、错位、清屏目录1系统分析 -------------------------------------------------2系统总体设计----------------------------------------------3详细设计-------------------------------------------------- 4统测试 ---------------------------------------------------5软件使用说明书 ------------------------------------------- 设计总结----------------------------------------------------参考文献----------------------------------------------------致谢———————————————————————————————————31.系统分析本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
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();}参考⽂献链接如下[参考⽂献]()。
电脑加减乘除操作方法

电脑加减乘除操作方法一、加法操作方法在电脑上进行加法操作是非常简单的。
首先,打开计算器应用程序或者在搜索栏中输入“计算器”来找到计算器应用。
然后,点击计算器应用图标打开应用程序。
在计算器应用程序中,你会看到一个带有数字和操作符的界面。
要进行加法操作,首先点击数字键盘上的相应数字,然后点击加号操作符。
接下来,再点击另一个数字键,这样你就输入了两个要相加的数字。
点击等于号,计算器应用程序会自动计算出两个数字的和,并在屏幕上显示结果。
二、减法操作方法进行减法操作与加法操作类似。
同样地,首先打开计算器应用程序。
然后,输入第一个要减去的数字,接着点击减号操作符,再输入第二个数字。
点击等于号,计算器应用程序会计算出两个数字的差,并在屏幕上显示结果。
三、乘法操作方法进行乘法操作也是很简单的。
同样地,打开计算器应用程序。
然后,输入第一个要相乘的数字,再点击乘号操作符,最后输入第二个数字。
点击等于号,计算器应用程序会自动计算出两个数字的乘积,并在屏幕上显示结果。
四、除法操作方法进行除法操作稍微复杂一些。
同样地,打开计算器应用程序。
然后,输入第一个要被除的数字,接着点击除号操作符,再输入第二个数字。
点击等于号,计算器应用程序会计算出两个数字的商,并在屏幕上显示结果。
需要注意的是,如果除数为0,则会出现错误提示,因为除数不能为0。
总结:通过以上操作方法,我们可以在电脑上进行加减乘除的运算。
只需打开计算器应用程序,输入相应的数字和操作符,然后点击等于号,就能得到运算结果。
在进行操作时,需要注意输入的数字和操作符的顺序,以及避免除数为0的情况。
同时,也可以使用计算器应用程序提供的其他功能,如开方、取余等。
通过熟练掌握电脑上的加减乘除操作方法,我们可以更方便地进行各种数学计算,提高工作和学习效率。
C++实现加减乘除计算器

C++实现加减乘除计算器本⽂实例为⼤家分享了C++实现加减乘除计算器的具体代码,供⼤家参考,具体内容如下#include <iostream>#include <conio.h>#include <string>void main(){char str[0xFF];do{system("cls");float a{};float b{};int count = 1;int isOperating = -1;bool isFirst = true;std::string text{ "按任意键重置,继续计算\n" };std::cout << "------计算机------\n";std::cout << "请输⼊加减乘除:";std::cin >> str;for (int i = strlen(str) - 1; i >= 0; i--){float* num = isFirst ? &b : &a;switch (str[i]){case '*':isOperating = 0;break;case '/':isOperating = 1;break;case '+':isOperating = 2;break;case '-':isOperating = 3;break;}if (!isFirst&&!isdigit(str[i])&& str[i]<=127&& str[i]>=0){isOperating = 4;text = "暂只⽀持正整数加减乘除,不能输⼊中⽂,其他符号或运算符\n按任意键重新输⼊\n";break;}if (isOperating != -1 && count != 1 && isFirst){isFirst = false;count = 1;if (i == 0 || i == strlen(str) - 1){isOperating = 4;break;}continue;}*num += ((int)str[i] - 48) * count;count *= 10;}switch (isOperating){case 0:std::cout << "结果为:" << a * b << std::endl;break;case 1:if (a == 0)text = "除数不能为0\n按任意键重置,继续计算\n";elsestd::cout << "结果为:" << a / b << std::endl;break;case 2:std::cout << "结果为:" << a + b << std::endl;break;case 3:std::cout << "结果为:" << a - b << std::endl;break;default:text = text == "按任意键重置,继续计算\n" ? "错误格式,按任意键重新输⼊\n" : text;}std::cout << text;_getch();} while (true);}⽤string接受做太简单了,⽤char数组⽐较好玩#include<iostream>using namespace std;int main(){double a,b;char op;cout << "enter a" << endl;cin >> a;cout << "enter operator" << endl;cin >> op;cout << "enter b" << endl;cin >> b;double result;if (op=='+'){result = a + b;}else if (op=='-'){result = a-b;}else if (op=='*'){result = a*b;}else if (op=='/'){if (b==0){cout << "cannot devided by 0\n";return 0;}else{result =a/b;}}else{cout << "invalid operator\n";return 0;}cout << "result is " << result << endl;return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
VB计算器加减乘除代码

VB计算器加减乘除代码以下是一个简单的VB计算器程序,可以进行加减乘除运算。
```vbPublic Class Form1Dim num1 As DoubleDim num2 As DoubleDim op As StringPrivate Sub btnNum_Click(sender As Object, e As EventArgs) Handles btn0.Click, btn1.Click, btn2.Click, btn3.Click,btn4.Click, btn5.Click, btn6.Click, btn7.Click, btn8.Click,btn9.ClickDim btn As Button = DirectCast(sender, Button)txtDisplay.Text += btn.TextEnd SubPrivate Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.ClicktxtDisplay.Text = ""End SubPrivate Sub btnOperator_Click(sender As Object, e As EventArgs) Handles btnPlus.Click, btnMinus.Click,btnMultiply.Click, btnDivide.ClickDim btn As Button = DirectCast(sender, Button)num1 = Double.Parse(txtDisplay.Text)op = btn.TexttxtDisplay.Text = ""End SubPrivate Sub btnEquals_Click(sender As Object, e As EventArgs) Handles btnEquals.Clicknum2 = Double.Parse(txtDisplay.Text)Dim result As DoubleSelect Case opCase "+"result = num1 + num2Case "-"result = num1 - num2Case "*"result = num1 * num2Case "/"If num2 <> 0 Thenresult = num1 / num2ElseMessageBox.Show("除数不能为0!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)txtDisplay.Text = ""ReturnEnd IfEnd SelecttxtDisplay.Text = result.ToStringEnd SubEnd Class```在这个计算器程序中,我使用了一个文本框(txtDisplay)来显示用户输入的数字和运算结果。
网页版计算器

前面我已经在WIN32平台中用C语言实现了加减乘除四则运算的计算器,现在我把它移植到网页中,使用HTML+Javascript语言实现它。
一、需求:在网页中编程实现一个简单的计算器,它能提供加减乘除四则运算,它支持IE 浏览器或火狐浏览器。
二、界面原型三、界面编码<html><head><title>加减乘除四则运算器</title></head><body><input type="text" width="50" value="" id="result" ><br><input type="button" style="width:30" style="height:25" value="1" id="One" onclick="Bt1()" /> <input type="button" style="width:30" style="height:25" value="2" id="Two" onclick="Bt2()" /> <input type="button" style="width:30" style="height:25" value="3" id="Three" onclick="Bt3()" /> <input type="button" style="width:30" style="height:25" value="+" id="Add" onclick="BtAdd()" /><br><input type="button" style="width:30" style="height:25" value="4" id="Four" onclick="Bt4()" /> <input type="button" style="width:30" style="height:25" value="5" id="Five" onclick="Bt5()" /> <input type="button" style="width:30" style="height:25" value="6" id="Six" onclick="Bt6()" /><input type="button" style="width:30" style="height:25" value="-" id="Sub" onclick="BtSub()" /> <br><input type="button" style="width:30" style="height:25" value="7" id="Seven" onclick="Bt7()" /> <input type="button" style="width:30" style="height:25" value="8" id="Eight" onclick="Bt8()" /> <input type="button" style="width:30" style="height:25" value="9" id="Nine" onclick="Bt9()" /> <input type="button" style="width:30" style="height:25" value="*" id="Mud" onclick="BtMud()" /><br><input type="button" style="width:30" style="height:25" value="0" id="Zero" onclick="Bt0()" /> <input type="button" style="width:30" style="height:25" value="." id="Point" onclick="BtPoint()" /><input type="button" style="width:30" style="height:25" value="=" id="Equal" onclick="BtEqual()" /><input type="button" style="width:30" style="height:25" value="/" id="Div" onclick="BtDiv()" /><input type="button" style="width:68" style="height:25" value="CLEAR" id="Clean" onclick="BtClean()" /></body></html>四、功能部分编码<script language="javascript">var rlt = 0.0;var middle = 0.0;var flag = 0; //1:+ 2:- 3:* 4:/var equalflag = 1; //0:button equal not pressed 1:button equal pressedvar changeflag = 0;function Bt1(){var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0){tmp.value += "1";}else{tmp.value = "1";}}else{tmp.value = "1";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt2(){var tmp = document.getElementById("result");if(changeflag == 0)if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "2";}else{tmp.value = "2";}}else{tmp.value = "2";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt3(){var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "3";}else{tmp.value = "3";}}else{tmp.value = "3";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt4()var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "4";}else{tmp.value = "4";}}else{tmp.value = "4";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt5(){var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "5";}else{tmp.value = "5";}}else{tmp.value = "5";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt6(){var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "6";}else{tmp.value = "6";}}else{tmp.value = "6";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt7(){var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "7";}else{tmp.value = "7";}}else{tmp.value = "7";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt8(){var tmp = document.getElementById("result");if(changeflag == 0){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "8";}else{tmp.value = "8";}}else{tmp.value = "8";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt9(){var tmp = document.getElementById("result");if(changeflag == 0 ){if( parseFloat(tmp.value) != 0 || tmp.value.indexOf(".") > 0) {tmp.value += "9";}else{tmp.value = "9";}}else{tmp.value = "9";changeflag = 0;}middle = parseFloat(tmp.value);}function Bt0(){var tmp = document.getElementById("result");if(changeflag == 0){if(tmp.value.indexOf(".") > 0 || parseFloat(tmp.value) != 0) {tmp.value += "0";}else{tmp.value = "0";}}else{tmp.value = "0";changeflag = 0;}middle = parseFloat(tmp.value);}function BtPoint(){var tmp = document.getElementById("result");if( (tmp.value.indexOf(".") < 0) && (tmp.value.length > 0)) {tmp.value += ".";}}function BtAdd(){var tmp = document.getElementById("result");if(equalflag){rlt = parseFloat(middle);}else{switch(flag){case 1:rlt += parseFloat(middle);break;case 2:rlt -= parseFloat(middle);break;case 3:rlt *= parseFloat(middle);break;case 4:if( parseFloat(middle) != 0){rlt /= parseFloat(middle);}break;}}changeflag = 1;middle = 0.0;flag = 1;equalflag = 0;tmp.value = parseFloat(rlt);}function BtSub(){var tmp = document.getElementById("result"); if(equalflag)rlt = parseFloat(middle);}else{switch(flag){case 1:rlt += parseFloat(middle);break;case 2:rlt -= parseFloat(middle);break;case 3:rlt *= parseFloat(middle);break;case 4:if( parseFloat(middle) != 0){rlt /= parseFloat(middle);}break;}}changeflag = 1;middle = 0.0;flag = 2;equalflag = 0;tmp.value = parseFloat(rlt);}function BtMud(){var tmp = document.getElementById("result");if(equalflag){rlt = parseFloat(middle);}else{switch(flag)case 1:rlt += parseFloat(middle);break;case 2:rlt -= parseFloat(middle);break;case 3:rlt *= parseFloat(middle);break;case 4:if( parseFloat(middle) != 0){rlt /= parseFloat(middle);}break;}}changeflag = 1;middle = 0.0;flag = 3;equalflag = 0;tmp.value = parseFloat(rlt);}function BtDiv(){var tmp = document.getElementById("result");if(equalflag){rlt = parseFloat(middle);}else{switch(flag){case 1:rlt += parseFloat(middle);break;case 2:rlt -= parseFloat(middle);break;case 3:rlt *= parseFloat(middle);break;case 4:if( parseFloat(middle) != 0){rlt /= parseFloat(middle);}break;}}changeflag = 1;middle = 0.0;flag = 4;equalflag = 0;tmp.value = parseFloat(rlt);}function BtEqual(){var tmp = document.getElementById("result");switch(flag){case 1:rlt += parseFloat(middle);break;case 2:rlt -= parseFloat(middle);break;case 3:rlt *= parseFloat(middle);break;case 4:if( parseFloat(middle) != 0){rlt /= parseFloat(middle);}break;}changeflag = 1;middle = rlt;flag = 0;equalflag = 1;tmp.value = parseFloat(rlt);}function BtClean(){var tmp = document.getElementById("result");tmp.value = "";middle = 0.0;rlt = 0.0;flag = 0;equalflag = 1;changeflag = 1;}</script>将它们放到</head>之前,然后保存一个文件名xx.html五、测试使用IE浏览器或者火狐浏览器,把xx.html 打开,按事先编写好的测试用例进行测试。
html+js实现简单的计算器代码(加减乘除)

html+js实现简单的计算器代码(加减乘除)html+js实现简单的计算器代码(加减乘除)<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><table><tr><td><input type="button" value="add" onclick="setOp('+', 'add');"/></td><td><input type="button" value="miner" onclick="setOp('-', 'miner');"/></td><td><input type="button" value="times" onclick="setOp('*', 'times');"/></td><td><input type="button" value="divide" onclick="setOp('/', 'divide');"/></td></tr></table><table id="tb_calc" style="display:none;"><tr><td> <input id="x" type="text" style="width:100px" value="" name="x" /></td><td> <lable id="op" name="op"></lable> </td><td> <input id="y" type="text" style="width:100px" value="" name="y" /> </td><td> <input id="opTips" type="button" value="" onclick="calc();"/> </td><td> <lable id="z" name="z"></lable> </td></tr></table><script type="application/javascript">function setOp(op, opTips){var tb=document.getElementById("tb_calc");tb.style.display = "none";document.getElementById("x").value = "";document.getElementById("y").value = "";document.getElementById("z").innerText = "";document.getElementById("op").innerText = op;document.getElementById("opTips").value = opTips;tb.style.display = "block";}function calc(){var x = parseInt(document.getElementById("x").value);var y = parseInt(document.getElementById("y").value);var op = document.getElementById("op").innerText;var z = "";switch(op){case '+':z = x + y;break;case '-':z = x - y;break;case '*': ;z = x * y;break;case '/': ;z = x / y;break;default:z = '';}console.log(x, op, y, '=', z);document.getElementById("z").innerText = z;}</script></body></html>截图如下:以上这篇html+js实现简单的计算器代码(加减乘除)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
整数加减乘除计算器-C51单片机

C51单片机-整数加减乘除计算器本程序是基于技能大赛设备,所使用的模块为显示模块、主机模块和指令模块。
此计算器适合10位以内的加减乘除运算,除法没有小数位,只取整数位。
此程序仅供参考,可以相互学习使用。
/* ---简易整数计算器--- */#include<reg52.h> //包含AT89s52头文件#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/* ---1602液晶控制引脚--- */sbit rs=P2^0;sbit rw=P2^1;sbit e=P2^2;#define port P0 //1602数据端口#define port3 P3 //矩阵键盘uchar code tab[]="0123456789+-*/=c";ulong a1,a2,aa; //没有小数点的长整型变量uchar jsf; //运算符/* ---微秒延时--- */void delay(uint i){while(i--);}/* ---1602液晶各子函数--- */ void busy1602(){port=0xff;rs=0;rw=1;e=1;e=1;while(port&0x80);e=0;}void writecom(uchar com){busy1602();rs=0;rw=0;port=com;e=1;e=0;}void writedat(uchar dat){busy1602();rs=1;rw=0;port=dat;e=1;e=0;}void showstr(bit row,uchar col,uchar *s) //显示字符串{uchar i;writecom(0x80+row*0x40+col);for(i=0;s[i]!=0;i++){writedat(s[i]);}}void shownum(bit row,uchar col,ulong num) //显示数字{writecom(0x04);writecom(0x80+row*0x40+col);if(num>=0)writedat(num%10+'0');if(num>9)writedat(num/10%10+'0');if(num>99)writedat(num/100%10+'0');if(num>999)writedat(num/1000%10+'0');if(num>9999)writedat(num/10000%10+'0');if(num>99999)writedat(num/100000%10+'0');if(num>999999)writedat(num/1000000%10+'0');if(num>9999999)writedat(num/10000000%10+'0');if(num>99999999)writedat(num/100000000%10+'0');if(num>999999999)writedat(num/1000000000%10+'0');if(num>4294967294)showstr(0,4,"rorrE");}void init1602() //1602 初始化{writecom(0x38);writecom(0x0c);writecom(0x06);writecom(0x01);/* ---按键扫描程序--- */uchar keyscan(){uchar key=16,i;for(i=0;i<4;i++){port3=0xfe<<i|0xfe>>(8-i); //循环左移switch(port3&0xf0){case 0xe0:key=4*i;break;case 0xd0:key=4*i+1;break;case 0xb0:key=4*i+2;break;case 0x70:key=4*i+3;break;}}return key;}/* ---运算--- */void js()switch(jsf){case '+':aa=a1+a2;break;case '-':if(a1>=a2)aa=a1-a2;else if(a1<a2)aa=a2-a1;break;case '*':aa=a1*a2;break;case '/':if(a2==0)aa=' ';else aa=a1/a2; break;}}void main(){uchar k;bit b=0,a;init1602();showstr(0,3,"jisuanqi");while(1){if(keyscan()!=16&&b==0){delay(200);if(keyscan()!=16){b=1;k=keyscan();if(k==0||k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k= =9) //数字键{if(a==0){a1=a1*10+k;writecom(0x01);shownum(1,15,a1);}else{a2=a2*10+k;writecom(0x01);shownum(1,15,a2);}}else if(k==10||k==11||k==12||k==13) //+-*/键{a=1;writecom(0x01);switch(k){case 10:jsf='+';showstr(1,15,"+");break;case 11:jsf='-';showstr(1,15,"-");break;case 12:jsf='*';showstr(1,15,"*");break;case 13:jsf='/';showstr(1,15,"/");break;}}else if(k==14) //等号键{a=0;js();writecom(0x01);if(aa==' ')showstr(0,0,"Error"); //被除数为零不显示,第一行显示错误else shownum(1,15,aa);if(jsf=='-'&&a1<a2)showstr(1,0,"-"); // aa是负数,前边添加负号else showstr(1,0," ");}else if(k==15) //清零键{a=0;a1=a2=aa=0;jsf=0;writecom(0x01);shownum(1,15,0);}}}else if(keyscan()==16)b=0;}}。
自己写的计算器(加减乘除)代码

⾃⼰写的计算器(加减乘除)代码⾸先是Calculator计算器类package zydCalr;public class Calculator {public double addition(double number1, double number2) {return number1+number2;}public double subtraction(double number1, double number2) {return number1-number2;}public double multiplication(double number1, double number2) {return number1*number2;}public double divsition(double number1, double number2) {return number1/number2;}}接下来是Execute运⾏类package zydCalr;import java.util.Scanner;public class Execution {public double execute(String str){String expression = str + "+1";// 初始化开始//char[] Cexpression = expression.toCharArray();// 创建运算器Calculator calculator = new Calculator();// 数值列表double[] numbers = new double[30];int numbersindex = 0;// 转型列表char[] sub = new char[30];// 数值下标位置int count = 0;// 符号列表char[] symbols = new char[10];int symbolsindex = 0;// temp1是数值列表上⼀个数值,temp2是当前的数值double temp1 = 0, temp2 = 0;;// 符号char symbol = 0;int flag = 1;// 初始化结束// 第⼀次遍历for (int i = 0; i < expression.length(); i++) {if (Cexpression[i] >= '0' && sub[i] <= '9') {sub[count++] = Cexpression[i];} else {// 字符串转型doubletemp2 = transition(sub,count);// 当flag=2时进⾏运算if (flag == 2) {flag = 1;// 获取数值列表前⼀个数值;temp1 = numbers[numbersindex - 1];// 判断symbol乘法还是除法,成功是乘法,失败为除法if (decide(symbol)==1) {temp2 = calculator.multiplication(temp1, temp2);} else {temp2 = calculator.divsition(temp1, temp2);}// 覆盖前⼀个数值numbersindex--;}// temp2存⼊数值列表numbers[numbersindex++] = temp2;// 获取符号symbol = Cexpression[i];// 转型数值下标位置清零count = 0;// 判断是否⼤于flag,flag=2,不⼤于则加⼊到符号列表if (judge(symbol) > flag) {flag = 2;} else {// 加⼊到符号列表symbols[symbolsindex++] = symbol;}}}double temp = numbers[0];count = 0;for (int i = 1; i < numbers.length; i++) {if (symbols[count] == '+') {temp += numbers[i];count++;} else if (symbols[count] == '-') {temp -= numbers[i];count++;}}return temp;}private static int judge(char symbol) {if (symbol == '+') {return 1;} else if (symbol == '-') {return 1;} else if (symbol == '*') {return 2;} else if (symbol == '/') {return 2;}return 0;}private static int decide(char symbol) {if (symbol == '*') {return 1;} else if (symbol == '/') {return 2;}return 2;}private static int transition(char[] sub1,int count) {int temp = 0;for (int i = 0; i < count; i++) {if (sub1[i] >= '0' && sub1[i] <= '9') {temp = temp * 10;temp += (sub1[i] - '0');}}return temp;}}产⽣表达式类package zydCalr;import java.util.Random;public class ProductionExpression {//⽣成数值public static String producerNumber() {int number = (int) (Math.random() * 50);return String.valueOf(number);}//⽣成数值public static String producerOpreator() {int number = (int) (Math.random() * 4);String[] operator = { "+", "-", "*", "/" };return operator[number];}//产⽣public static String producer(int i) {StringBuilder sb = new StringBuilder();int flag = (int) (Math.random() * 5);if(flag==1){sb.append("-");}sb.append(producerNumber());while (i > 0) {sb.append(producerOpreator());sb.append(producerNumber());i--;}return sb.toString();}//产⽣表达式public static String producerExpression() {int lenght = (int) (Math.random() * 5);if (lenght % 2 == 0) {lenght++;}String expression = producer(lenght);return expression;}}⽣产者类package zydCalr;import java.util.ArrayList;import java.util.List;public class Producer implements Runnable {static final int MAXQUEUE = 5;private List<String> messages = new ArrayList<String>(); private ProductionExpression pe=new ProductionExpression(); @Overridepublic void run() {// TODO Auto-generated method stubwhile (true) {putMessage();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}private synchronized void putMessage() {while (messages.size() >= MAXQUEUE) {try {wait();} catch (InterruptedException e) {e.printStackTrace();}}//⽣成表达式messages.add(pe.producerExpression());notify();}public synchronized String getMessage() {while (messages.size() == 0) {try {notify();wait();} catch (InterruptedException e) {e.printStackTrace();}}String message = (String) messages.remove(0);notify();return message;}}消费者类package zydCalr;public class Consumer implements Runnable {Producer producer;Consumer(Producer producer) {this.producer = producer;}public void run() {while (true) {System.out.println("-------------开始⼀组表达式处理-------------");String message = producer.getMessage();System.out.println("⽣成表达式:" + message);Execution exe=new Execution();System.out.printf("处理结果:"+"%.2f\n",exe.execute(message));try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) {Producer producer = new Producer();new Thread(producer).start();Consumer consumer = new Consumer(producer);new Thread(consumer).start();}}代码还是很简单的,主要有两个列表,⼀个列表存数值,⼀个列表存符号,如果符号是乘法或者除法,则把当前的数值和数值列表最后的数值相乘或相除,然后覆盖到数字列表的最后,如果不是,则存⼊数值列表的最后,符号列表添加当前的减法或者乘法,最后我发现许多细节的东西没有处理。
C语言实现科学计算器的加减乘除平方开放运算

C语言实现科学计算器的加减乘除平方开放运算科学计算器是一种能够进行各种高级数学运算的工具。
在这个项目中,我们将使用C语言实现一个简单的科学计算器,它能够执行加法、减法、乘法、除法、平方和开方等运算。
首先,让我们来设计计算器的基本框架。
我们可以使用一个循环来接受用户的输入,并根据输入的指令执行相应的运算。
我们可以使用一个变量来存储当前的结果,并在每次运算完成后更新该变量。
以下是一个简单的代码框架:```c#include <stdio.h>#include <math.h>int maidouble result = 0; // 存储当前的结果char operation; // 存储用户的指令while (1)//显示当前的结果printf("当前结果:%lf\n", result);//获取用户的指令printf("请输入指令:");scanf(" %c", &operation);//根据用户的指令执行相应的运算switch (operation)case '+'://执行加法运算break;case '-'://执行减法运算break;case '*'://执行乘法运算break;case '/'://执行除法运算break;case 's'://执行平方运算break;case 'r'://执行开方运算break;case 'q'://退出计算器return 0;default:printf("无效的指令\n");}}return 0;```在代码中,我们使用了`switch`语句来根据用户的指令执行相应的运算。
接下来,我们将详细说明每个运算的实现。
1.加法运算:用户可以输入两个数,并将它们相加。
毕业设计简易加减乘除计算器

毕业设计题目简易加减乘除计算器系别专业班级姓名学号指导教师日期设计任务书设计题目:简易加减乘除计算器设计要求:1.根据所学内容运用编程做一个简易加减乘除计算器,实现加、减、乘、除、等以及清零的功能。
2.设置一组数码管, 使其能够显示程序运行,按键动作的内容。
3.设置一组按键,使其键依次对应0——9、“+”、“-”、“*”、“/”、“=”和清除键。
4.可以进行小于255的数的加减乘除运算,并可连续运算。
当键入值大于255时,将自动清零,可重新输入。
设计进度要求:第一周:确定题目,寻找单片机和计算器设计的相关资料;第二周:读懂资料,有初步的设计思路;第三周:绘制硬件电路图;第三周:设计软件框图;第四周:相应软件设计(程序设计);第五周:进行程序调试并且修改;第六周:写毕业设计论文;第七周:修改并提交毕业设计;第八周:准备论文答辩;指导教师(签名):摘要在很多领域的数据处理中要用到数学运算,作为计算机自动处理系统更显得重要。
此项目设计以单片机为核心部件的计算器,采用4*4矩阵式键盘,16个键依次对应0——9、“+”、“-”、“*”、“/”、“=”和清除键。
使用单片机最小应用系统1模块,简单方便。
采用静态显示,显示器由5个共阴极数码管组成。
输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
5个串/并行移位寄存器芯片74LS164首尾相连。
每片的并行输出作为LED数码管的段码。
本计算器系统简单,实用性强,成本低,使用维护方便,软件功能强,运行稳定可靠等优点。
关键词:单片机,计算器,键盘,静态显示前言随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。
在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。
python,实现计算器程序,加减乘除混合运算加括号,完善实现

python,实现计算器程序,加减乘除混合运算加括号,完善实现作业:要求实现⼀个由键盘输⼊表达式,计算结果的⼩程序.import re#detect error inputs = input("Expression:")s = re.sub('\s',"",s)if re.findall('[^0-9\+\-\*/\)\(]',s):print("Error input,Stop!")exit()def judge1(sign):if sign == '*':obj = pile('\*')elif sign == '/':obj = pile('/')return(obj)def judge2(sign):if sign == '+':obj = pile('\+')elif sign == '-':obj = pile('\-')return(obj)def Format(s):s = s.replace('','')s = s.replace('++','+')s = s.replace('+-','-')s = s.replace('-+','-')s = s.replace('--','+')return(s)def calculate(s):while re.search('[\*,/]',s):s = Format(s)obj = judge1(re.search('[\*,/]',s).group())res = obj.split(s)first = re.search('[\d,\.]+$',res[0]).group()second = re.search('^[\d,\.,\-]+',res[1]).group()if re.search('\.',first):fir = float(first)else:fir = int(first)if re.search('\.',second):sec = float(second)else:sec = int(second)if re.search('[\*,/]',s).group() == '*':result = str((fir * sec))s = re.sub('%s\*%s'%(first,second),result,s)print('s=',s)elif re.search('[\*,/]',s).group() == '/':result = str(fir / sec)s = re.sub('%s/%s'%(first,second),result,s)print('s=',s)if re.search('^\-[\d,\.]+',s):return(s)s = Format(s)# return(s)while re.search('[\+,\-]',s):s = Format(s)obj = judge2(re.search('[\+,\-]',s).group())res = obj.split(s)first = re.search('[\d,\.]+$',res[0]).group()second = re.search('^[\d,\.,\-]+',res[1]).group()if re.search('\.',first):fir = float(first)else:fir = int(first)if re.search('\.',second):sec = float(second)else:sec = int(second)if re.search('[\+,\-]',s).group() == '+':result = str(fir + sec)s = re.sub('%s\+*%s'%(first,second),result,s)print('s=',s)elif re.search('[\+,\-]',s).group() == '-':result = str(fir - sec)s = re.sub('%s\-%s'%(first,second),result,s)print('=',s)if re.search('^\-[\d,\.]+',s):return(s)s= Format(s)return(s)def first_step(s):while re.search('\([^()]+\)',s):res = re.search('\([^()]+\)',s)s_temp = res.group()print(s_temp)[first,second] = s.split(s_temp)ret = re.search('\([^()]+\)',s)tmp = re.search('[^()]+',ret.group())print(tmp.group())temp = str(calculate(tmp.group()))print('temp=',temp)s = first + temp + secondprint('first=',first)print('second=',second)print('temp=',temp)print('new s=',s)# if re.search('[\+,\-]{1}',s):# breakresult = calculate(s)print("result=",result)first_step(s)花了两天时间终于完成这个⼩作业了,其实没什么难度,就是正则表达式的灵活运⽤,由于逻辑⽐较复杂,测试花费了很多时间.。