c语言计算器加减乘除开方混合计算和清零代码
用C#实现简单计算器(课外作业)

⽤C#实现简单计算器(课外作业)⼀、打开vs2013,选择新建→项⽬→Windows窗体应⽤程序⼆、对窗体进⾏设计,添加响应的按钮等部件,可修改各部件参数(重新打开⽂件,可通过视图→设计器,打开窗体的设计器界⾯)三、功能说明1.加减乘除运算2.⼗进制转⼆进制,⼗进制转⼗六进制3.“与”和“或”的位运算4.平⽅和开⽅运算5.ANS能存储上⼀次的运算结果,CE清除Text内容,AC清除所有数据四、双击部件进⾏代码编辑,以下是计算器的代码using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace Calculator{public partial class Form1 : Form{private double num1=0;//第⼀操作数private double num2;//第⼆操作数private string sign;//运算符号private double num3;//结果private bool check=true;//检测是否为第⼀操作数private double ans = 0;//存储上⼀次计算的结果public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e) {if (check==true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button2_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button3_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button4_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}elseButton b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button5_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button6_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button7_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button8_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}private void button9_Click(object sender, EventArgs e) {if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else{Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}private void button10_Click(object sender, EventArgs e){if(textBox1.Text != ""){if(check==true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else if (check == false){Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}}private void button12_Click(object sender, EventArgs e)//加法 {sign = "+";textBox1.Text = "";check = false;}private void button13_Click(object sender, EventArgs e)//减法 {sign = "-";textBox1.Text = "";check = false;}private void button14_Click(object sender, EventArgs e)//乘法 {sign = "*";textBox1.Text = "";check = false;}private void button15_Click(object sender, EventArgs e)//除法 {sign= "/";textBox1.Text = "";check = false;}private void button23_Click(object sender, EventArgs e)//与运算 {sign = "&";textBox1.Text = "";check = false;}private void button24_Click(object sender, EventArgs e)//或运算 {sign = "|";textBox1.Text = "";check = false;}private void button25_Click(object sender, EventArgs e)//平⽅ {sign = "pow";textBox1.Text = "";check = false;}private void button26_Click(object sender, EventArgs e)//开⽅ {sign = "sqrt";textBox1.Text = "";check = false;}private void button16_Click(object sender, EventArgs e)//等于号 {check = true;switch (sign){case"+":case"-":num3 = num1 - num2;break;case"*":num3 = num1 * num2;break;case"/":num3=num1/num2;break;case"&":num3 = (int)num1 & (int)num2;break;case"|":num3 = (int)num1 | (int)num2;break;case "pow":num3 = Math.Pow(num1,2);break;case "sqrt":num3 = Math.Sqrt(num1);break;}num1 = num3;ans = num1;textBox1.Text = num3.ToString();}private void button17_Click(object sender, EventArgs e)//清除所有的数据 {textBox1.Text = "";num1 = 0;num2 = 0;num3 = 0;ans = 0;}private void button22_Click(object sender, EventArgs e)//清除当前的数据 {textBox1.Text = "";num1 = 0;num2 = 0;num3 = 0;}private void button11_Click(object sender, EventArgs e)//⼩数点{if (textBox1.Text != ""){if (check == true){Button b = (Button)sender;textBox1.Text += b.Text;num1 = double.Parse(textBox1.Text);}else if (check == false){Button b = (Button)sender;textBox1.Text += b.Text;num2 = double.Parse(textBox1.Text);}}}private void button18_Click(object sender, EventArgs e){int a = int.Parse(textBox1.Text);textBox1.Text = Convert.ToString(a, 2);}private void button19_Click(object sender, EventArgs e){int a = int.Parse(textBox1.Text);textBox1.Text = Convert.ToString(a, 16);}private void button21_Click(object sender, EventArgs e){{num1 = ans;}else{num2 = ans;}}private void button20_Click(object sender, EventArgs e) {textBox1.Text = " ㄟ(▔⽫▔ㄟ)";}}}。
c语言函数加减乘除运算编程

c语言函数加减乘除运算编程1.介绍在计算机科学中,函数是大多数编程语言中的基本组件之一,它是一段被封装起来的可重用代码。
在C语言中,函数的定义形式如下:返回类型函数名(参数列表){函数体}其中,返回类型指定函数返回值的类型,函数名用于调用函数,参数列表传递给函数的值用于函数计算中。
本文将介绍如何在C语言中实现基本的加减乘除运算函数。
2.实现加法函数加法是最基本的运算之一,在C语言中,我们可以定义一个函数来执行两个参数的加法。
下面是一个基本的加法函数:int add(int a, int b) {return a + b;}在此函数中,我们通过返回a和b的和来实现加法运算。
我们可以通过调用函数来获得相加的结果。
例如,下面的代码将调用add函数并将其结果打印到屏幕上:int main() {int num1 = 2;int num2 = 4;int sum = add(num1, num2);printf("The sum of %d and %d is %d\n", num1, num2, sum);return 0;}3.实现减法函数减法是另一个基本运算,我们可以通过类似的方法定义减法函数。
下面是一个基本的减法函数:int subtract(int a, int b) {return a - b;}在此函数中,我们通过a和b的差值返回减法结果。
的代码将调用subtract函数并将其结果打印到屏幕上:int main() {int num1 = 10;int num2 = 5;int difference = subtract(num1, num2);printf("The difference between %d and %d is %d\n",num1, num2, difference);return 0;}4.实现乘法函数乘法是另一个基本运算,我们可以通过类似的方法定义乘法函数。
计算器c 版程序代码

//calculator.h#ifndef CALCULATOR_H#define CALCULATOR_H#include<iostream>#include<cmath>#include<string>using namespace std;class calculator{private:public:void compute();};void calculator ::compute(){double a,b;char s;cout<<"欢迎使用计算器运算数据!"<<endl;cout<<"本计算器能计算的简单运算有:+,-,*,/,^。
"<<endl; cout<<"输入你想要运算的两个数和运算符。
"<<endl;cout<<" 1 运算符中缀 "<<endl;cout<<" 2 运算符后缀 "<<endl;cout<<" 3 运算符前缀 "<<endl;int n;cin>>n;switch(n){case 1:cin>>a;cin>>s;cin>>b;break;case 2:cin>>a;cin>>b;cin>>s;break;case 3:cin>>s;cin>>a;cin>>b;break;}switch(s){case '+':cout<<"="<<(a+b)<<endl;break;case '-':cout<<"="<<(a-b)<<endl;break;case '*':cout<<"="<<(a*b)<<endl;break;case '/':if(b!=0){cout<<"="<<(a/b)<<endl; }elsecerr<<"Error!"<<endl;break;case '^':cout<<"="<<pow(a,b)<<endl; break;}}#endif//Function.cpp#include"Function.h"#include<string>#include<iostream>#include<cmath>using namespace std;void Function::count(){cout<<"欢迎使用三角函数运算程序!"<<endl;cout<<"请输入所要计算的函数 sin,cos,tan,本计算器只支持这三种三角函数运算。
速算,简易计算器c语言代码,可实现加减乘除

速算,简易计算器c语⾔代码,可实现加减乘除#include"stdio.h"#include"math.h"#include"stdlib.h"struct optrstyle{int top;char stack[20];}struct opndstyle{int top;int stack[20];}void main(){char ch;while(1){printf("-----------------------------------------\n");printf("|-----------欢迎来到速算24--------------|\n");printf("|----------是否开始游戏------------|\n");printf("|--------- 开始游戏请按'Y'-------------|\n");printf("|--------- 退出游戏请按其他键-------------|\n");printf("-----------------------------------------\n");scanf("%c",&ch);if(ch=='Y' or ch=='y'){}elsebreak;}}int EvaluateExpression(){// 算术表达式求值的算符优先算法。
设OPTR 和OPND 分别为运算符栈和运算数栈,OP 为运算符集合。
InitStack(OPTR);Push(OPTR,'#');InitStack(OPND);c = getchar();while(c!='#' || GetTop(OPTR)!='#'){if(!In(c,OP)){Push((OPND,c);c = getchar();} // 不是运算符则进栈elseswitch(Precede(GetTop(OPTR),c)){case '<': // 栈顶元素优先权低Push(OPTR,c);c = getchar();break;case '=': // 脱括号并接收下⼀字符Pop(OPTR,x); c = getchar();break;case '>': // 退栈并将运算结果⼊栈Pop(OPTR,theta);Pop(OPND,b);Pop(OPND,a);Push(OPND,Operate(a,theta,b));break;}// switch}// whilereturn GetTop(OPND);}// EvaluateExpressionint changecard( char a[]){if()void InitStack(Stack &S){S.top=-1;}int Pop1(Stack &S){if(S.top==-1){printf("stack is empty!");exit (1);}ElemType temp=S.stack[S.top]; S.top--;return temp;}int GetTop1(Stack &S){if(S.top==-1){printf("stack is empty!");exit (1);}return S.stack[S.top];}char Pop2(Stack &S){if(S.top==-1){printf("stack is empty!");exit (1);}ElemType temp=S.stack[S.top]; S.top--;return temp;char GetTop2(Stack &S){if(S.top==-1){printf("stack is empty!");exit (1);}return S.stack[S.top];}char Precede(char a,char b)//算符优先级函数{ char temp;switch(a){case '+','-':{if (b=='*' or b=='/' or b=='(')temp='<';else temp='>';}break;case '*','/':{if(b=='(')temp='<';else temp='>';}break;case '(':{if(b==')')temp='=';elsetemp='<';}break;case ')':temp='>';break; case '#':{if(b=='#') temp='='; else temp='<'; }break; default break; }return temp; }。
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();}参考⽂献链接如下[参考⽂献]()。
C语言实现科学计算器的加减乘除平方开放运算

C语言实现科学计算器的加减乘除平方开放运算科学计算器是一种能进行复杂运算的计算工具,常用于数学、物理、化学等科学领域的计算。
C语言是一种通用的编程语言,在科学计算领域也有广泛的应用。
下面是一个使用C语言实现科学计算器的示例代码,涵盖了加减乘除平方开放等运算。
```c#include <stdio.h>#include <math.h>int maidouble num1, num2;int operator;printf("请输入要进行的运算:1.加法 2.减法 3.乘法 4.除法 5.平方 6.开方\n");scanf("%d", &operator);switch (operator)case 1:printf("请输入两个数进行相加:\n");scanf("%lf %lf", &num1, &num2);printf("结果:%lf\n", num1 + num2);break;printf("请输入两个数进行相减:\n"); scanf("%lf %lf", &num1, &num2); printf("结果:%lf\n", num1 - num2); break;case 3:printf("请输入两个数进行相乘:\n"); scanf("%lf %lf", &num1, &num2); printf("结果:%lf\n", num1 * num2); break;case 4:printf("请输入被除数和除数:\n"); scanf("%lf %lf", &num1, &num2);if (num2 == 0)printf("除数不能为0\n");} elseprintf("结果:%lf\n", num1 / num2); }break;printf("请输入一个数进行平方:\n"); scanf("%lf", &num1);printf("结果:%lf\n", pow(num1, 2)); break;case 6:printf("请输入一个数进行开方:\n"); scanf("%lf", &num1);if (num1 < 0)printf("负数不能进行开方运算\n");} elseprintf("结果:%lf\n", sqrt(num1)); }break;default:printf("请输入有效的运算选项\n"); break;}return 0;```该示例代码通过使用`switch`语句根据用户输入的选项进行相应的运算。
计算器c语言代码

计算器c语言代码计算器C语言代码计算器是一种常见的工具,用于进行数值计算和数学运算。
计算器通常具有基本的四则运算功能,可以执行加法、减法、乘法和除法运算,同时还可以进行其他高级计算,比如开方、求幂、取余等。
在本文中,我们将介绍如何使用C语言编写一个简单的计算器。
我们需要定义计算器的基本功能。
我们可以使用函数来实现不同的计算操作。
下面是一个示例代码,实现了加法、减法、乘法和除法四种功能:```c#include <stdio.h>// 加法函数double add(double a, double b) {return a + b;}// 减法函数double subtract(double a, double b) {return a - b;}// 乘法函数double multiply(double a, double b) { return a * b;}// 除法函数double divide(double a, double b) { if (b == 0) {printf("除数不能为零!\n"); return 0;}return a / b;}int main() {double num1, num2;char operator;printf("请输入两个操作数:");scanf("%lf %lf", &num1, &num2); printf("请输入操作符:");scanf(" %c", &operator);switch (operator) {case '+':printf("结果:%lf\n", add(num1, num2));break;case '-':printf("结果:%lf\n", subtract(num1, num2));break;case '*':printf("结果:%lf\n", multiply(num1, num2));break;case '/':printf("结果:%lf\n", divide(num1, num2));break;default:printf("无效的操作符!\n");break;}return 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();}}代码还是很简单的,主要有两个列表,⼀个列表存数值,⼀个列表存符号,如果符号是乘法或者除法,则把当前的数值和数值列表最后的数值相乘或相除,然后覆盖到数字列表的最后,如果不是,则存⼊数值列表的最后,符号列表添加当前的减法或者乘法,最后我发现许多细节的东西没有处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言计算器加减乘除开方混合计算和清零代码
一、介绍
计算器是人们日常生活中常用的工具之一,通过计算器可以进行加减乘除等基本运算,还可以进行开方等复杂运算。
本文将介绍使用C语言编写计算器的加减乘除开方混合计算和清零代码。
二、加法运算代码
加法运算是计算器最基本的运算之一,以下是C语言中加法运算的代码示例:
```c
#include <stdio.h>
int m本人n() {
int num1, num2, sum;
printf("请输入两个整数:");
scanf("d d", num1, num2);
sum = num1 + num2;
printf("它们的和是:d\n", sum);
return 0;
}
```
三、减法运算代码
接下来是减法运算的C语言代码示例:
```c
#include <stdio.h>
int m本人n() {
int num1, num2, diff;
printf("请输入两个整数:");
scanf("d d", num1, num2);
diff = num1 - num2;
printf("它们的差是:d\n", diff);
return 0;
}
```
四、乘法运算代码
乘法运算是计算器中常用的运算之一,以下是C语言中乘法运算的代码示例:
```c
#include <stdio.h>
int m本人n() {
int num1, num2, product;
printf("请输入两个整数:");
scanf("d d", num1, num2);
product = num1 * num2;
printf("它们的积是:d\n", product);
return 0;
}
```
五、除法运算代码
除法运算涉及到除数不能为0的情况,以下是C语言中除法运算的代码示例:
```c
#include <stdio.h>
int m本人n() {
float num1, num2, quotient;
printf("请输入两个数:");
scanf("f f", num1, num2);
if(num2 != 0) {
quotient = num1 / num2;
printf("它们的商是:.2f\n", quotient);
} else {
printf("除数不能为0!\n");
}
return 0;
}
```
六、开方运算代码
开方运算是比较复杂的运算之一,以下是C语言中开方运算的代码示例:
```c
#include <stdio.h>
#include <math.h>
int m本人n() {
float num, sqrt_num;
printf("请输入一个数:");
scanf("f", num);
if(num >= 0) {
sqrt_num = sqrt(num);
printf("它的开方是:.2f\n", sqrt_num);
} else {
printf("输入的数不能为负数!\n");
}
return 0;
}
```
七、混合计算代码
有时候计算器需要进行混合运算,即在一个表达式中包含多种运算,以下是C语言中混合计算的代码示例:
```c
#include <stdio.h>
int m本人n() {
float num1, num2, result;
char operator;
printf("请输入一个表达式(如:2+3*4):");
scanf("f c f", num1, operator, num2);
switch(operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if(num2 != 0) {
result = num1 / num2;
} else {
printf("除数不能为0!\n"); return 1;
}
break;
default:
printf("无效的运算符!\n"); return 1;
}
printf("结果是:.2f\n", result);
return 0;
}
```
八、清零代码
最后一个功能是清零,即将计算器上的结果归零,以下是C语言中清零的代码示例:
```c
#include <stdio.h>
int m本人n() {
float result = 0;
printf("当前结果为:.2f\n", result);
char choice;
printf("是否清零?(Y/N):");
scanf(" c", choice);
if(choice == 'Y' || choice == 'y') {
result = 0;
printf("已清零,当前结果为:.2f\n", result);
} else if(choice == 'N' || choice == 'n') {
printf("未清零,当前结果为:.2f\n", result);
} else {
printf("无效的输入!\n");
}
return 0;
}
```
九、结论
在本文中,我们以C语言的形式介绍了计算器的加减乘除开方混合计算和清零代码。
通过这些代码示例,我们可以看到计算器在C语言中是如何实现各种基本和复杂的运算及功能的。
希望这些代码示例能够对读者有所帮助,也希望读者可以根据这些示例进行更多的探索和实践。