计算器C语言程序

合集下载

C语言简单计算器

C语言简单计算器

C语言编程实现一个简单的四则运算计算器附录:程序清单#include<stdio.h>main(){floata,b,c,d,t;char s;printf("欢迎使用我的计算器,祝您用的愉快!\n");printf("\n输入要运算的数据,例如 1+2-3*4 或 1*3/2+5\n"); printf("\n输入 n 退出\n");loop: scanf("%f",&a);scanf("%c",&s);if (s=='n'){return;}switch(s){case '+': scanf("%f",&b); scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b-c/d);break;}break;case '*': scanf("%f",&c);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b*c/d);break;}break;case '/': scanf("%f",&c);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a+b/c/d);break;}break;}break;case '-': scanf("%f",&b);scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s); switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b-c/d);break;}break;case '*': scanf("%f",&c);scanf("%c",&s); switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b*c/d);break;}break;case '/': scanf("%f",&c);scanf("%c",&s); switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a-b/c/d);break;}break;}break;case '*': scanf("%f",&b);scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b-c/d);break;}break;case '*': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b*c/d);break;}break;case '/': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a*b/c/d);break;}break;}break;case '/': scanf("%f",&b);scanf("%c",&s);switch(s){case '+': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b+c/d);break;}break;case '-': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b-c/d);break;}break;case '*': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b*c/d);break;}break;case '/': scanf("%f",&c);scanf("%c",&s);switch(s){case '+':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c+d);break;case '-':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c-d);break;case '*':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c*d);break;case '/':scanf("%f",&d);scanf("%c",&s);printf("=%f",a/b/c/d);break;}break;}break;default :printf("error\n");break;}printf("\n继续\n");goto loop;printf("\n谢谢您的使用\n");}。

C语言基础—计算器程序

C语言基础—计算器程序
清华大学出版社
2.1.3 整型数据
2.1 数据类型与表达式
清华大学出版社
2.1 数据类型与表达式
2.1.3 整型数据
说明: (1) 实际上,常用的整型变量类型是:int 或 short。 (2) 特别强调:short 所适用的数据范围为 -32768~32767。
例如:short x=32768; x的赋值超出了-32768~32767的范围,会出现数据溢出,程序运行结 果错误。为避免数据溢出,超出-32768~32767范围的数据,要定义为 int 或long。
清华大学出版社
2.1 数据类型与表达式
2.1.1 C语言数据类型
所谓数据类型,就是在存储数据时,编译系统根据数据的大小分配不同 大小的存储空间,即不同类型的数据分配不同长度的存储单元,采用不同的存 储形式。例如:基本整型(int),Visual C++6.0分配4字节存储空间,字符型
(char),Visual C++6.0分配1字节存储空间。
C语言程序设计
清华清大华学大出学出版版社社
项目2 计算器程序
学习目标
熟练掌握C语言的常量与变量 掌握C语言的数据类型分类 重点掌握C语言的整型和浮点型数据的表示方法、
分类、存储单元及取值范围 重点掌握算术运算符和算术表达式 掌握赋值运算符和赋值表达式 重点掌握整型、浮点型数据的格式化输入与输出 理解C语言程序设计的步骤
}
清华大学出版社
2.1 数据类型与表达式
2.1.5 基本算术运算符和算术表达式
1.基本的算术运算符
清华大学出版社
2.1 数据类型与表达式
2.1.5 基本算术运算符和算术表达式
说明:

c语言简易计算器报告

c语言简易计算器报告

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

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

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

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

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

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

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

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

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

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

速算,简易计算器c语言代码,可实现加减乘除

速算,简易计算器c语言代码,可实现加减乘除

速算,简易计算器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; }。

PTA简单计算器(C语言)

PTA简单计算器(C语言)

8{
9
scanf("%d",&b);
10
if(c=='/'#34;ERROR\n");
12
return 0;
13
}
14
switch(c)
15
{
16
case '+':a=a+b;break;
17
case '-':a=a-b;break;
18
case '*':a=a*b;break;
输出格式: 在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例: 1+2*10-10/2= 输出样例: 10
1 #include<stdio.h>
2 int main()
3{
4 int a,b;
5 char c;
6 scanf("%d",&a);
7 while((c=getchar())!='=')
假设计算器只能进行加减乘除运算运算数和结果都是整数四种运算符的优先级相同按从左到右的顺序计算
PTA简单计算器( C语言)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式: 输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
19
case '/':a=a/b;break;
20
default:printf("ERROR\n");return 0;

STC89c52单片机 计算器C语言程序

STC89c52单片机 计算器C语言程序

STC89c52单片机计算器C语言程序STC89C52单片机计算器C语言程序下面是STC89C52单片机计算器的C语言程序,适用于P2位选P0段选时钟12MHZ。

程序代码如下:includedefine uchar unsigned chardefine uint unsigned intuchar Led[17] = {0x3f。

0x06.0x5b。

0x4f。

0x66.0x6d。

0x7d。

0x07.0x7f。

0x6f。

0x77.0x7c。

0x39.0x5e。

0x79.0x71.0x00};long float Number[]={0,0,0,0};uchar A[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};long int D[] = {0,0,0,0,0,0,0,0};uchar code C[] = {0x0.0xFE。

0xFD。

0xFB。

0xF7.0xEF。

0xDF。

0xBF。

0x7F};uchar k=16;uchar b;long float Out_put;uchar e=0;uchar g=0;uchar L=0;uchar g1=0;uchar g2=0;uchar g3=0;uchar g4=0;char j=-1;uchar m=0;uchar n=0;uchar x=0;程序中包含了头文件和宏定义,以及数码管段选、数码管显示位控制寄存器、数码管显示内容寄存器、数码管位选、按键控制变量等各种变量。

其中,Led数组存储了数码管的段选值,Number数组存储了数字,A数组存储了数码管的位选值,D数组存储了数码管的显示内容,C数组存储了数码管的位选值,k、b、Out_put、e、g、L、g1、g2、g3、g4、j、m、n、x 等变量用于按键控制和运算。

代码中没有明显的格式错误,可以直接使用。

下面是已经修改过的文章:uchar xo = 0./*控制开始计数小数点的变量*/long int result;void Delay(uint o) {uint i。

C语言实现简易计算器(可作加减乘除)

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语⾔计算器的代码。

计算器实现的功能有:加、减、乘、除、求余。

功能简单,但对于初学者的我来说能把它写出来,排除每个错误依旧是个难题。

前后两种代码是由⾃⼰所学东西的质量决定的,如有错误,请前辈指出。

最初版本的计算器:1 #include<stdio.h>23int checkPassword();45int add(int x,int y);67int sub(int x,int y);89int multi(int x,int y);1011float quo(float x1,float y1);1213int com(int x,int y);1415int x,y;1617int result;1819int select;2021float result1;2223float x1,y1;2425int success,psw;2627int a;2829int i;3031int t;323334353637void main()3839 {4041 printf("请输⼊密码:\n");4243 i=0;4445do{46474849 scanf("%d",&a);50515253if( a!=1234 && i<2)5455 printf("请重新输⼊密码:\n");5657else5859 i=3;6061 i++;6263 }while( i<=2);6465if(a==1234)6667 {6869for(t=1;t!=6;t=select)7071 {72737576777879 printf("+=============================+\n"); 8081 printf("+======计=算=器=主=菜=单======+\n"); 8283 printf("+=============================+\n"); 8485 printf("+==========1、加法==========+\n"); 8687 printf("+==========2、减法==========+\n"); 8889 printf("+==========3、乘法==========+\n"); 9091 printf("+==========4、除法==========+\n"); 9293 printf("+==========5、求余==========+\n"); 9495 printf("+==========6、退出==========+\n"); 9697 printf("+=============================+\n"); 9899100101102103 printf("请输⼊你的选择:\n");104105 scanf("%d",&select);106107108109switch(select)110111 {112113114115case1:116117 printf("请输⼊两个数:\n");118119 scanf("%d%d",&x,&y);120121 result=add(x,y);122123 printf("%d+%d=%d\n",x,y,result);124125break;126127case2:128129 printf("请输⼊两个数:\n");130131 scanf("%d%d",&x,&y);132133 result=sub(x,y);134135 printf("%d-%d=%d\n",x,y,result);136137break;138139case3:140141 printf("请输⼊两个数:\n");142143 scanf("%d%d",&x,&y);144145 result=multi(x,y);146147 printf("%d*%d=%d\n",x,y,result);148149break;150151case4:152153 printf("请输⼊两个数:\n");154155 scanf("%f%f",&x1,&y1);156157 result1=quo(x1,y1);159 printf("%f/%f=%f\n",x1,y1,result1); 160161break;162163case5:164165 printf("请输⼊两个数:\n");166167 scanf("%d%d",&x,&y);168169 result=com(x,y);170171 printf("%d/%d=%d\n",x,y,result); 172173break;174175case6:176177break;178179default:180181 printf("请输⼊1~5之间的数\n"); 182183break;184185186187188189 }190191 }192193 }194195 }196197int add(int x,int y)198199 {200201int sum;202203 sum=x+y;204205return sum;206207 }208209int sub(int x,int y)210211 {212213int sub;214215 sub=x-y;216217return sub;218219 }220221int multi(int x,int y)222223 {224225int multi;226227 multi=x*y;228229return multi;230231 }232233float quo(float x,float y)234235 {236237float quo;238239 quo=x/y;240241return quo;243 }244245int com(int x,int y)246247 {248249int com;250251 com=x%y;252253return com;254255 }256257int checkPassword( int psw)258259 {260261if(psw==1234)262263 success=1;264265else266267 success=-1;268269return success;270271 }改版后的计算器:1 #include<stdio.h>23int yanzheng(int );45void caidan();67void jiafa(int,int);89void jianfa(int,int);1011void chengfa(float,float);1213void chufa(float,float);1415void mo(int,int);16171819void main(){2021int x,m;2223int y;2425float a,b;2627 printf("请输⼊密码:\n");2829 scanf("%d",&x);3031 m=yanzheng(x);3233if(m==1){3435 caidan();3637//int y;3839//float a,b;4041for(;y!=6;){4243 printf("请输⼊选项:\n"); 4445 scanf("%d",&y);4647if(y>=1 && y<6){4849 printf("请输⼊要运算的两个数:\n");5051 scanf("%f%f",&a,&b);5253 }54555657switch(y){5859case1 :jiafa(a,b);break;6061case2 :jianfa(a,b);break;6263case3 :chengfa(a,b);break;6465case4 :chufa(a,b);break;6667case5 :mo(a,b);break;6869case6 :break;7071default : printf("选项输⼊错误!请重试\n");break; 7273 }7475 }7677 }7879 }808182838485int yanzheng(int x){8687int i,m;8889for(i=1,m=0;i<3;i++){9091if(x==1234){9293 m=1;9495break;9697 }9899 printf("请重新出⼊密码:");100101 scanf("%d",&x);102103104105 }106107return m;108109 }110111112113void caidan(){114115 printf("+=============================+\n"); 116117 printf("+======计=算=器=主=菜=单======+\n"); 118119 printf("+=============================+\n"); 120121 printf("+==========1、加法==========+\n"); 122123 printf("+==========2、减法==========+\n"); 124125 printf("+==========3、乘法==========+\n"); 126127 printf("+==========4、除法==========+\n"); 128129 printf("+==========5、求余==========+\n"); 130131 printf("+==========6、退出==========+\n"); 132133 printf("+=============================+\n"); 134135 }136137138139void jiafa(int x,int y){140141int sum;142143 sum=x+y;144145 printf("%d\n", sum);146147 }148149150151void jianfa(int x,int y){152153int cha;154155 cha=x-y;156157 printf("%d\n", cha);158159 }160161162163void chengfa(float x,float y){164165float ji;166167 ji=x*y;168169 printf("%f\n", ji);170171 }172173174175void chufa(float x,float y){176177float shang;178179 shang=x/y;180181 printf("%f\n", shang);182183 }184185186187void mo(int x,int y){188189int mo;190191 mo=x%y;192193 printf("%d\n", mo);194195 }。

C语言简易计算器的实现

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语言简单计算器实现四则运算可带括号

C语言简单计算器实现四则运算可带括号

C语言简单计算器实现四则运算可带括号```c#include <stdio.h>#include <stdlib.h>int priority(char op)if (op == '+' , op == '-')return 1;else if (op == '*' , op == '/')return 2;else if (op == '(')return 0;elsereturn -1;void calculate(char op, int *numStack, int *top, char *opStack, int *opTop)int num2 = numStack[(*top)--];int num1 = numStack[(*top)--];switch (op)case '+':numStack[++(*top)] = num1 + num2; break;case '-':numStack[++(*top)] = num1 - num2; break;case '*':numStack[++(*top)] = num1 * num2; break;case '/':numStack[++(*top)] = num1 / num2; break;}int eval(char *expr)int numStack[100];char opStack[100];int numTop = -1;int opTop = -1;int num = 0;int sign = 1;while (*expr != '\0')if (*expr >= '0' && *expr <= '9')num = num * 10 + (*expr - '0');} else if (*expr == '+' , *expr == '-')numStack[++numTop] = num * sign;num = 0;sign = (*expr == '+') ? 1 : -1;} else if (*expr == '*' , *expr == '/')while (opTop >= 0 && priority(*expr) <=priority(opStack[opTop]))calculate(opStack[opTop--], numStack, &numTop, opStack, &opTop);}opStack[++opTop] = *expr;} else if (*expr == '(')opStack[++opTop] = '(';} else if (*expr == ')')while (opStack[opTop] != '(')calculate(opStack[opTop--], numStack, &numTop, opStack, &opTop);}opTop--;}expr++;}numStack[++numTop] = num * sign;while (opTop >= 0)calculate(opStack[opTop--], numStack, &numTop, opStack, &opTop);}return numStack[0];int maichar expr[100];printf("请输入表达式:");scanf("%s", expr);int result = eval(expr);printf("计算结果:%d\n", result);return 0;```以上是一个简单的C语言四则运算计算器的实现。

c语言四则运算计算器

c语言四则运算计算器

c语言四则运算计算器C语言四则运算计算器摘要:计算器是我们日常生活中常见和实用的工具之一。

本文将介绍如何使用C语言编写一个简单的四则运算计算器。

首先,我们将了解四则运算的定义和原则。

然后,我们将逐步介绍计算器的实现,包括用户输入、运算符识别和运算结果输出。

最后,我们将通过示例演示计算器的使用,并讨论一些功能的改进。

1.引言计算器是一种用于执行基本数学运算的设备或工具。

它通常可以进行加法、减法、乘法和除法等四个基本运算符的操作。

许多计算器还具有其他功能,如求平方根、百分比计算等。

编写一个计算器程序涉及到基本的输入、运算和输出。

2.四则运算的定义与原则四则运算是指加法、减法、乘法和除法四个基本运算。

这些运算符有一定的运算规则和优先级,如乘法和除法优先于加法和减法。

在编写计算器程序时,我们需要遵循这些原则来确保正确的运算结果。

3.计算器的实现3.1 用户输入使用C语言编写计算器程序的第一步是获取用户的输入。

通常,用户可以通过控制台或图形用户界面输入计算表达式。

在本文中,我们将使用控制台输入。

用户输入应该是一个合法的表示式,其中包含数值和运算符。

3.2 运算符识别在得到用户输入后,我们需要识别表达式中的运算符,以便进行运算。

常见的运算符有加号(+)、减号(-)、乘号(*)和除号(/)。

我们可以使用条件语句或函数来判断输入的运算符,并将其转化为相应的计算操作。

3.3 运算结果输出一旦我们完成了运算,我们需要将结果输出给用户。

输出可以是一段文字或数字,可以打印在控制台上,也可以显示在图形界面上。

在C语言中,我们可以使用printf函数来输出结果。

根据需要,我们可以将结果四舍五入,设置特定的精度或格式。

4.示例演示让我们通过一个示例来展示计算器的使用。

假设用户输入表达式\。

C语言计算器详细教程(四则运算小数括号)

C语言计算器详细教程(四则运算小数括号)

C语言计算器详细教程(四则运算小数括号)在本教程中,我将为您详细介绍如何用C语言创建一个简单的计算器,支持四则运算、小数和括号操作。

希望本教程能帮助您理解C语言中基本的数学运算和控制流程的基本概念。

1.引言计算器是一种广泛使用的工具,它可以执行一系列数学运算,并返回结果。

我们将创建一个C语言程序,模拟计算器的基本功能,包括加法、减法、乘法、除法操作,以及支持小数和括号运算。

2.设计思路计算器的基本框架是接收用户输入的算式,分析其中的运算符和数字,执行相应的操作,并返回结果。

我们可以使用C语言的字符串和字符处理函数来实现这个功能。

3.算法实现开始之前,我们需要定义一些变量和函数,以便在后续的代码中使用。

我们将使用一个字符串数组来存储用户输入的算式,并定义一些辅助函数来处理字符串和执行运算。

```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_EXPRESSION_LEN 100char expression[MAX_EXPRESSION_LEN];int position = 0;//辅助函数:读取下一个数字float readNumbechar number[20];int i = 0;while (isdigit(expression[position]) , expression[position] == '.')number[i] = expression[position];i++;position++;}number[i] = '\0';return atof(number);//辅助函数:读取下一个运算符char readOperatoreturn expression[position++];//辅助函数:计算两个数的结果float calculate(float num1, float num2, char op)switch (op)case '+':return num1 + num2;case '-':return num1 - num2;case '*':return num1 * num2;case '/':return num1 / num2;default:printf("Invalid operator!\n");exit(1);}//主函数int maiprintf("Please enter an expression: "); scanf("%[^\n]", expression);float result = readNumber(; //读取第一个数字while (expression[position] != '\0')char op = readOperator(; //读取运算符float num = readNumber(; //读取下一个数字result = calculate(result, num, op); //计算结果}printf("Result: %.2f\n", result);return 0;```4.代码解析- 我们首先定义了一个字符串数组expression,用于存储用户输入的算式,最大长度为MAX_EXPRESSION_LEN。

C语言实现科学计算器的加减乘除平方开放运算

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语言计算器源程序

#include<stdio.h>//标准输入输出#include<conio.h>//system设置颜色使用到#include<stdlib.h>//清屏时用到#include<math.h>//数学函数用到int main(){ void mnue();//菜单函数声明void add();//加法函数声明void minus();//减法函数void multiply();//乘法函数void divided();//除法函数void sinx();//sin函数void cosx();//cos函数void tanx();//tan函数void arcsin();//void arccos();void arctan();void sqrtx();void logx();void log10x();void expx();void powx();void tuichu();system("color 5B");mnue();}void mnue()//菜单{ char M;printf("\n\n\n\t\t\t ********* ********\n");printf("\t\t\t ** ** ** **\n");printf("\t\t\t ** ** ** **\n");printf("\t\t\t** 欢迎*** 使用**\n");printf("\t\t\t ** * **\n");printf("\t\t\t ** 简易计算器**\n");printf("\t\t\t ** **\n");printf("\t\t\t.........按任意键进入——》》》\n");printf("\t\t\t ** **\n");printf("\t\t\t ** **\n");printf("\t\t\t ** **\n");printf("\t\t\t *\n");getch();system("cls");while(M!='h'){printf("\n\n\n\t\t\t|------------------------------|\n");printf("\t\t\t| 加法—>A\t| 减法—>a |\n");printf("\t\t\t| 乘法—>B\t| 除法—>b |\n");printf("\t\t\t| 正弦—>C\t| 反正弦—>c |\n");printf("\t\t\t| 余弦—>D\t| 反余弦—>d |\n");printf("\t\t\t| 正切—>E\t| 反正切—>e |\n");printf("\t\t\t| ln —>F\t| log10 —>f |\n");printf("\t\t\t| 幂指数—>G\t| E 幂数—>g |\n");printf("\t\t\t| 开根—>H\t| 退出—>h |\n");printf("\t\t\t|______________________________|\n");printf("\n\t\t请输入要进行运算的法则!\n");M=getch();while(1){if('A'<=M&&M<='H' ||'a'<=M&&M<='h'){ //system("cls");break;}else{printf("\n\n\t提示:输入错误\n\t—>请正确输入!\n\a\a\a\a\a\a\a");M=getch();}}switch(M){case 'A': add();break;case 'a': minus();break;case 'B': multiply();break;case 'b': divided();break;case 'C': sinx();break;case 'c': arcsin();break;case 'D': cosx();break;case 'd': arccos();break;case 'E': tanx();break;case 'e': arctan();break;case 'F': logx();break;case 'f': log10x();break;case 'G': powx();break;case 'g': expx();break;case 'H': sqrtx();break;}}if("M==h") tuichu();}void add()//加法函数{int z, y,x;char n='Y';while(n=='Y'){printf("请输入:\n");scanf("%d%d",&x,&y);z=y+x;printf("%d+%d=%d\n",x,y,z);printf("是否继续(Y/N)\n");n=getch();if(n=='N')system("cls");}}void minus()//减法函数{int x,y,z;char n='Y';while(n=='Y'){printf("请输入:\n");scanf("%d%d",&x,&y);z=x-y;printf("%4d-%4d=%4d\n",x,y,z);printf("是否继续(Y/N)\n");n=getch();if(n=='N')system("cls");}}void multiply()//乘法函数{int x,y,z;char n='Y';while(n=='Y'){printf("请输入:\n");scanf("%d%d",&x,&y);z=x*y;printf("%4d*%4d=%4d\n",x,y,z);printf("是否继续(Y/N)\n");n=getch();if(n=='N')system("cls");}}void divided()//除法函数{float x,y,z;char n='Y';while(n=='Y'){printf("请输入:\n");scanf("%f%f",&x,&y);z=x/y;printf("%4d/%4d=%4d\n",x,y,z);printf("是否继续(Y/N)\n");n=getch();if(n=='N')system("cls");}}void sinx()//sin函数{double x,y;scanf("%lf",&x);y=sin(x);printf("sin%lf=%lf",x,y);}void cosx()//cos函数{double a,b;scanf("%lf",&a);b=cos(a);printf("cos%lf=%lf",b);}void tanx()//tan函数{double a,b;scanf("%lf",&a);b=tan(a);printf("tan%lf=%lf",b);}void arcsin(){double a,b;scanf("%lf",&a);b=asin(a);printf("arcsin%lf=%lf",b);void arccos(){double a,b;scanf("%lf",&a);b=acos(a);printf("arccos%lf=%lf",b); }void arctan(){double a,b;scanf("%lf",&a);b=atan(a);printf("arctan%lf=%lf",b); }void sqrtx(){double a,b;scanf("%lf",&a);b=sqrt(a);printf("sqrt%lf=%lf",b); }void logx(){double a,b;scanf("%lf",&a);b=log(a);printf("log%lf=%lf",a,b); }void log10x(){double a,b;scanf("%lf",&a);b=log10(a);printf("ln%lf=%lf",b);}void expx(){double a,b;scanf("%lf",&a);b=exp(a);printf("exp%lf=%lf\n",b); }void powx()double a,b,c;scanf("%lf%lf",&a,&b);c=pow(a,b);printf("pow%lf=%lf\n",c);}void tuichu(){ system("cls");printf("\n\n\n\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");printf("\n\n\t\t\t谢谢使用再见!\n\n\n");printf("\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n\t"); }。

C语言实现科学计算器的加减乘除平方开放运算

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.加法运算:用户可以输入两个数,并将它们相加。

C语言计算器程序源代码

C语言计算器程序源代码

C语⾔计算器程序源代码//strcmp(s1,s2) 当s1⼤于s2时,返回1 ,s1⼩于s2时,返回-1,相等时,返回0 #include "stdio.h"#include "ctype.h"#include "string.h"#include "math.h"#define MAX 256#define STACK_SIZE 128#define WORD_LEN 8#define POP 1#define PUSH 0#define ERR -1#define END 2#define OPER 0#define NUM 1#define WORD 2#define ADD 1#define SUB 2#define MUL 3#define DIV 4#define POW 5#define FAC 6#define BRA_L 7#define BRA_R 8#define SIN 9#define COS 10#define TAN 11#define CTG 12#define LG 13 //以10为底的常⽤对数//#define LN 14//#define LOG 15//⾏标为当前操作符代号,列标为栈顶元素代号//2表⽰计算结束,0表⽰当前操作符进栈,1表⽰栈顶操作符出栈// \0 + - * / ^ ! ( ) sin cos tg ctg lgint Priority[14][14]={2, 1, 1, 1, 1, 1, 1,-1,-1, 1, 1, 1, 1, 1, /* \0 */0, 1, 1, 1, 1, 1, 1, 0,-1, 1, 1, 1, 1, 1, /* + */0, 1, 1, 1, 1, 1, 1, 0,-1, 1, 1, 1, 1, 1, /* - */0, 0, 0, 1, 1, 1, 1, 0,-1, 1, 1, 1, 1, 1, /* * */0, 0, 0, 1, 1, 1, 1, 0,-1, 1, 1, 1, 1, 1, /* / */0, 0, 0, 1, 1, 1, 1, 0,-1, 0, 0, 0, 0, 0, /* ^ */0, 0, 0, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, 0, /* ! */0, 0, 0, 0, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0, /* ( */-1,1, 1, 1, 1, 1, 1, 1,-1, 1, 1, 1, 1, 1, /* ) */0, 0, 0, 0, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0, /* sin */0, 0, 0, 0, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0, /* cos */0, 0, 0, 0, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0, /* tg */0, 0, 0, 0, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0, /* ctg */0, 0, 0, 0, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0}; /* lg */char KeyWord[36][WORD_LEN+1]={"sin", //前12个为函数,多余的⽤于扩展"cos","tan","tg","ctg","lg","","","","","","","","","","help", // 后⾯为命令,多余的为扩展"version","set","digit", //精度,⼩数点后的位数"color","radian", //弧度"degree", //⾓度"file","clr","clear","window", //窗⼝模式"fullscr", //全屏模式"","","","","","","","",""};int OperCode(char c){int code;switch(c){case '\0':code=0;break;case '+':code=1;break;case '-':code=2;break;case '*':code=3;break;case '/':code=4;break;case '^':code=5;break;case '!':code=6;break;case '(':code=7;break;case ')':code=8;break;case 's':code=9;break; //sincase 'c':code=10;break; //coscase 't':code=11;break; //tgcase 'C':code=12;break; //ctgcase 'l':code=13;break; //log default:code=-1;break;};return code;}int WordCode(char* word){int i;for(i=0;i<25;i++)if(strcmp(KeyWord[i],word)==0) break;if(i>=25)return -1;else}void help(){printf("显⽰帮助信息!\n");return;}void version(){printf("显⽰版本信息!\n");return;}void Err(int errcode,int position,char *p){printf("\n ERR:%d Position:%d %s",errcode,position,p); return;}double long factorial(int i){if(i==1 || i==0)return(1.0);elsereturn(i*factorial(i-1));}main(){char Expression[MAX+1];int Operator[STACK_SIZE];int OperStackTop;double long Number[STACK_SIZE];int NumStackTop;double long NumList[STACK_SIZE];int NumCursor,NumListSize;int OperList[STACK_SIZE];int OperCursor,OperListSize;int WordList[STACK_SIZE];int WordCursor,WordListSize;int Index[MAX+1];int IndexCursor,IndexSize;char Word[WORD_LEN+1];double long num,num1,num2,weight,tempnum;int Oper;int isDecimal,isErr,isNumber,isEnd;char CurrentOper;int i,j,k,m,n;char ch;num=0.0;num2=0.0;tempnum=0.0;Oper=-1;while(1){for(i=0;i<=MAX;i++) //表达式初始化,中间表索引初始化{Expression[i]='\0';Index[i]=-1;}for(i=0;i{Operator[i]='0';Number[i]=0.0;NumList[i]=0.0;OperList[i]=-1;WordList[i]=-1;}NumStackTop=-1; //栈顶指针初始化OperStackTop=0; //操作符栈压⼊\0Operator[OperStackTop]=OperCode('\0');NumCursor=0; //各种中间表指针初始化,各种中间表的长度初始化NumListSize=0;OperCursor=0;OperListSize=0; //操作符表中先写⼊第⼀个操作符'\0'WordCursor=0;WordListSize=0;IndexCursor=0;IndexSize=0;// Index[0]=OPER;printf("Cal>"); //初始化完成,输出提⽰符i=0;while((ch=getchar())!='\n'){if(i>MAX) /*输⼊超长,则出错*/{Err(0,i,"输⼊的表达式长度超过规定值!\n");isErr=1;break;}if(isupper(ch))ch=tolower(ch);Expression[i]=ch;i++;}if(isErr==1){isErr=0;continue;}if(strlen(Expression)==0) //直接回车continue;if(strcmp("end",Expression)==0 ||strcmp("exit",Expression)==0 || strcmp("quit",Expr ession)==0)break;//⼀下代码为编译预处理,主要处理负号,并检查括号是否配对k=0;for(i=0;Expression[i]!='\0';i++){if((i==0&&Expression[i]=='-') || (i>0&&Expression[i]=='-'&&Expression[i-1]=='(')){for(j=strlen(Expression);j>i;j--)Expression[j]=Expression[j-1];Expression[i]='0';}if(Expression[i]=='(') //检查括号k++;if(Expression[i]==')')k--;}if(k>0) //如果括号不配对{Err(1,-1,"缺少右括号 )\n");continue;}if(k<0){Err(1,-1,"缺少左括号 (\n");continue;}//编译预处理结束i=0; //词法分析while(1){if(Expression[i]=='\0'){OperList[OperListSize]=OperCode(Expression[i]);OperListSize++;Index[IndexSize]=OPER;IndexSize++;// printf("IndexSize=%d,Index[IndexSize]=%d,Expression[i]=%c\n",IndexSize,Index[IndexSize],Expression[i]); break;}isDecimal=0;isNumber=0;while(isdigit(Expression[i])||Expression[i]=='.') //读取数字{isNumber=1;if(Expression[i]=='.'){if((i<(MAX-1) && !isdigit(Expression[i+1])) || (i+1)==MAX) //不正确的⼩数点位置{Err(2,i,"⼩数点位置不正确!\n");isErr=1;isNumber=0;i++;break;}isDecimal=1;weight=0.1;i++;continue;}if(isDecimal==0)num=num*10.0+(double long)(Expression[i]-'0');{num=num+(double long)(Expression[i]-'0')*weight;weight=weight*0.1;}i++;} //数字读完if(isErr==1)break;if(isNumber==1) //如果刚才成功读取了数字,则数字⼊栈{NumList[NumListSize]=num;NumListSize++;isNumber=0;num=0.0;Index[IndexSize]=NUM;// printf("IndexSize=%d,Index[IndexSize]=%d\n",IndexSize,Index[IndexSize]); IndexSize++;}for(k=0;k<=WORD_LEN;k++)Word[k]='\0';j=0;while(isalpha(Expression[i])){if(j>=WORD_LEN) //超过长度仍然未匹配,则出错{Err(3,i,"单词长度超过规定值/未定义的单词:");printf("%s\n",Word);isErr=1;break;}Word[j]=Expression[i];j++;// printf("WORD:%s\n",Word);if(WordCode(Word)==-1) //匹配不成功{if(!isalpha(Expression[i+1]))//匹配不成功,但是下⼀个字符已经不是字母,{Err(4,i,"未定义的单词:"); //则出错,并跳出循环printf("%s\n",Word);isErr=1;break;} //匹配不成功且还能继续读取字符,则继续读取下⼀个字母i++;continue;}else //匹配成功,则单词⼊表,读取下⼀个字符{switch(WordCode(Word)){case 0:ch='s';break;case 1:ch='c';break;case 2:case 3:ch='t';break;case 4:ch='C';case 5:ch='l';break;default:ch='\0';WordList[WordListSize]=WordCode(Word);WordListSize++;Index[IndexSize]=WORD;IndexSize++;break;};if(ch!='\0'){OperList[OperListSize]=OperCode(ch);OperListSize++;Index[IndexSize]=OPER;IndexSize++;}i++;break;}} //单词读完if(isErr==1)break;if(Expression[i]==' ')i++;if(!isdigit(Expression[i]) && !isalpha(Expression[i]) && Expression[i]!='\0') {if(OperCode(Expression[i])==-1){isErr=1;Err(5,i,"未定义的操作符:");printf("%c\n",Expression[i]);break;}else{OperList[OperListSize]=OperCode(Expression[i]);OperListSize++;Index[IndexSize]=OPER;IndexSize++;i++;}} //操作符读完if(isErr==1)break;} //词法分析结束if(isErr==1){isErr=0;continue;}/* for(k=0;kprintf("NumList[%d]=%f\n",k,NumList[k]);for(k=0;kprintf("OperList[%d]=%d\n",k,OperList[k]);for(k=0;kprintf("WordList[%d]=%d\n",k,WordList[k]);for(k=0;kprintf("Index[%d]=%d\n",k,Index[k]);printf("\n\n IndexCursor=%d IndexSize=%d,\n",IndexCursor,IndexSize);printf("OperStacktop=%d,Operator[OperStackTop]=%d,NumStackTop=%d\n",OperStackTop,Operator[OperStackTop],NumStackTop); // continue;*/isEnd=0;IndexCursor=0;while(1){if(Index[IndexCursor]==NUM){if(NumCursor<0 || NumListSize<0){Err(10,-1,"索引列表与操作数列表信息不匹配\n");isErr=1;break;}NumStackTop++;Number[NumStackTop]=NumList[NumCursor];NumCursor++;IndexCursor++;continue;} //数字处理if(Index[IndexCursor]==OPER){m=OperList[OperCursor];n=Operator[OperStackTop];switch(Priority[m][n]){case ERR:Err(20,IndexCursor,"不可预见的错误!\n");isErr=1;break;case PUSH:OperStackTop++;Operator[OperStackTop]=m;OperCursor++;IndexCursor++;break;case END:isEnd=1;break;case POP:Oper=Operator[OperStackTop];OperStackTop--;switch(Oper){case BRA_L: IndexCursor++;OperCursor++;break;case ADD:if(NumStackTop>=1){num2=Number[NumStackTop];NumStackTop--;num1=Number[NumStackTop];NumStackTop--;tempnum=num1+num2;NumStackTop++;Number[NumStackTop]=tempnum;num1=0.0;num2=0.0;tempnum=0.0;}else{Err(11,IndexCursor,"加法运算缺少操作数!\n");isErr=1;}break;case SUB:if(NumStackTop>=1){num2=Number[NumStackTop];NumStackTop--;num1=Number[NumStackTop];NumStackTop--;tempnum=num1-num2;NumStackTop++;Number[NumStackTop]=tempnum;num1=0.0;num2=0.0;tempnum=0.0;}else{Err(12,IndexCursor,"减法运算缺少操作数!\n");isErr=1;}break;case MUL:if(NumStackTop>=1){num2=Number[NumStackTop];NumStackTop--;num1=Number[NumStackTop];NumStackTop--;tempnum=num1*num2;NumStackTop++;Number[NumStackTop]=tempnum;num1=0.0;num2=0.0;tempnum=0.0;}else{Err(13,IndexCursor,"乘法运算缺少操作数!\n");isErr=1;}break;case DIV:if(NumStackTop>=1){num2=Number[NumStackTop];NumStackTop--;if(num2==0.0){Err(14,IndexCursor,"除数为 0 ,不能进⾏除法运算!\n"); isErr=1;break;}num1=Number[NumStackTop];NumStackTop--;tempnum=num1/num2;NumStackTop++;Number[NumStackTop]=tempnum;num1=0.0;num2=0.0;tempnum=0.0;}else{Err(15,IndexCursor,"除法运算缺少操作数!\n"); isErr=1;}break;case POW:if(NumStackTop>=1){num2=Number[NumStackTop]; NumStackTop--;num1=Number[NumStackTop]; NumStackTop--;tempnum=pow(num1,num2); NumStackTop++;Number[NumStackTop]=tempnum;num1=0.0;num2=0.0;tempnum=0.0;}else{Err(16,IndexCursor,"乘⽅运算缺少操作数!\n"); isErr=1;}break;case FAC:if(NumStackTop>=0){num2=Number[NumStackTop]; NumStackTop--;tempnum=factorial(num2); NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}else{Err(17,IndexCursor,"阶乘运算缺少操作数!\n"); isErr=1;}break;case SIN:if(NumStackTop>=0){num2=Number[NumStackTop]; NumStackTop--;tempnum=sin(num2);NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}{Err(18,IndexCursor,"正弦函数缺少参数!\n"); isErr=1;}break;case COS:if(NumStackTop>=0){num2=Number[NumStackTop]; NumStackTop--;tempnum=cos(num2);NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}else{Err(19,IndexCursor,"余弦函数缺少参数!\n"); isErr=1;}break;case TAN:if(NumStackTop>=0){num2=Number[NumStackTop]; NumStackTop--;tempnum=tan(num2);NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}else{Err(20,IndexCursor,"正切函数缺少参数!\n");isErr=1;}break;case CTG:if(NumStackTop>=0){num2=Number[NumStackTop]; NumStackTop--;tempnum=1.0/tan(num2); NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}else{Err(21,IndexCursor,"余切函数缺少参数!\n"); isErr=1;}break;/* case LN:if(NumStackTop>=0)num2=Number[NumStackTop]; NumStackTop--;if(num2<=0.0){Err(20,IndexCursor,"⾃然对数函数真数:"); printf(" %f ⼩于0!\n",num2);isErr=1;break;}tempnum=log(num2);NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}else{Err(17,IndexCursor,"⾃然对数函数缺少参数!\n"); isErr=1;}break; */case LG:if(NumStackTop>=0){num2=Number[NumStackTop]; NumStackTop--;if(num2<=0.0){Err(23,IndexCursor,"常⽤对数函数真数:"); printf(" %f ⼩于0!\n",num2);isErr=1;break;}tempnum=log10(num2);NumStackTop++;Number[NumStackTop]=tempnum;num2=0.0;tempnum=0.0;}else{Err(22,IndexCursor,"常⽤对数函数缺少参数!\n"); isErr=1;}break;default:Err(100,IndexCursor,"运算符(代码:"); printf(" %d )暂不⽀持!\n",Oper);isErr=1;break;/*#define SIN 9#define COS 10#define TAN 11#define CTG 12#define LOG 13 */}; //switch 语句结束break;};//switchif(isErr==1 || isEnd==1)break;continue;} //运算符处理if(Index[IndexCursor]==WORD){printf(" 单词尚未处理!\n");break;}//在这⾥处理单词}//核⼼计算结束if(isErr==1){isErr=0;continue;}if(NumStackTop>0){Err(1000,-1,"多余的操作数:");printf("%f!\n",Number[NumStackTop]);}elseif(NumStackTop==0 && isEnd==1){if(fabs(Number[NumStackTop])>1e20) printf(" %.20e\n",Number[NumStackTop]); elseprintf(" %f\n",Number[NumStackTop]); isEnd=0;}}//主循环结束}//主函数结束。

c语言实现虚拟计算器代码

c语言实现虚拟计算器代码

c语言实现虚拟计算器代码以下是一个简单的C语言虚拟计算器代码示例: c.#include <stdio.h>。

int main() {。

char operator;float num1, num2, result;printf("请输入运算符(+, -, , /): ");scanf("%c", &operator);printf("请输入两个数字: ");scanf("%f %f", &num1, &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("结果: %f %c %f = %f\n", num1, operator,num2, result);return 0;}。

这段代码首先要求用户输入运算符和两个数字,然后根据用户输入的运算符进行相应的计算,并输出结果。

在这个示例中,我们使用了switch语句来根据不同的运算符执行不同的计算操作。

另外,我们还对除数为0的情况进行了处理,以避免出现除以0的错误。

当然,这只是一个简单的示例代码,实际的虚拟计算器可能会更复杂,包括更多的功能和更完善的用户界面。

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

if(flagb==1) { if(b5==0xff)
{b=b*10+table[num]; bzy(); b0=table1[num]; fuzhi(); display(); } } else { b=table[num]; b0=table1[num]; fuzhi(); display(); flagb=1; } } } void ag_eq()//再次按下等于时 { if(flagz==1) { a=c; } } void jieguo() { if(c<=1000000) {qh(); display();qn();ag_eq(); } else {a5=0x86;a0=a1=a2=a3=a4=0xff;display();} } void keyscan() { P3=0xfe; if(P3!=0xfe) { delay(10); if(P3!=0xfe) { temp=P3&0xf0; switch(temp)
flag=1; fuhao=4,b=0; } } } P3=0xfd; if(P3!=0xfd) { delay(10); if(P3!=0xfd) { temp=P3&0xf0; switch(temp) { case 0xe0:num=4;break; case 0xd0:num=5;break; case 0xb0:num=6;break; case 0x70:num=7;break; } while(P3!=0xfd); if(num==4||num==5||num==6) { panduan(); } else { flag=1; fuhao=3,b=0; } } }
a0=0xc0;b0=0xc0; a1=a2=a3=a4=a5=b1=b2=b3=b4=b5=0xff; flag=0,flaga=0,flagb=0;flagz=0; a=0,b=0,c=0; } void qn() { b0=b1=b2=b3=b4=b5=0xff; } uchar code table1[]={ 0xf8,0x80,0x90,0, 0x99,0x92,0x82,0, 0xf9,0xa4,0xb0,0, 0,0xc0,0,0}; uchar code table2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uint code table[]={ 7,8,9,0, 4,5,6,0, 1,2,3,0, 0,0,0,0 }; void delay(uint xms) { uint i,j; for(i=xms;i>0;i--)
case 15:{ flag=1;fuhao=1;display(),b=0;};break;
{ display(); keyscan();
} } 仿真图:
仿真所选原件。
case 13: if(flag==0) {
if(flaga==1) {
a=a*10+table[num]; azy(); a0=table1[num]; display(); } else { if(a==0) {display();} else {a0=table1[num]; a=a*10+table[num]; display(); flaga=1; } } } else { if(flagb==1) { b=b*10+table[num]; bzy(); b0=table1[num]; fuzhi(); display(); } else { if(b==0) {display();} else {b0=table1[num]; b=a*10+table[num]; fuzhi(); display(); flagb=1; } } } display(); break;
} } } } void main() { init(); while(1)
case 14:flagz=1; if(fuhao==1) { c=a+b;jieguo(); /*qh(); display(); qn();ag_eq();*/ } else if(fuhao==2) { if(a-b>=0) { c=a-b; qh(); display();ag_eq(); } else { c=b-a; qh(); display(); } qn();ag_eq(); } else if(fuhao==3) { c=a*b; qh(); display();qn();ag_eq(); } else if(fuhao==4) { c=a/b; qh(); display();qn();ag_eq(); } break;
数码管显示计算器 C 语言程序如下: #include <reg51.h> #include <math.h> #define uchar unsigned char #define uint unsigned int uchar i,j,temp,num; uchar a0,a1,a2; uchar flag,flaga,flagb,fuhao; long a,b,c,flagz; void init() {
P3=0xfb; if(P3!=0xfb) {
delay(10); if(P3!=0xfb) {
temp=P3&0xf0; switch(temp) {
case 0xe0:num=8;break; case 0xd0:num=9;break; case 0xb0:num=10;break; case 0x70:num=11;break; } while(P3!=0xfb); if(num==8||num==9||num==10) { panduan(); } else { flag=1; fuhao=2,b=0; } } } P3=0xf7; if(P3!=0xf7) { delay(10); if(P3!=0xf7) { temp=P3&0xf0; switch(temp) { case 0xe0:num=12;break; case 0xd0:num=13;break; case 0xb0:num=14;break; case 0x70:num=15;break; } while(P3!=0xf7); switch(num) { case 12:;break;
if(a5!=table2[0]||a4!=table2[0]||a3!=table2[0]||a2!=table2[0]||a1!=table2[0]) {P2=0x00; P0=a1; P2=0X10; delay(1); }
P2=0x00; P0=a0; P2=0X20; delay(1); } void azy() { a5=a4; a4=a3; a3=a2; a2=a1; a1=a0; } void bzy() { b5=b4;
for(j=110;j>0;j--); } void display() { if(a5!=table2[0])
{P2=0x00; P0=a5; P2=0X01; delay(1);
}
if(a5!=table2[0]||a4!=table2[0]) {P2=0x00; P0=a4; P2=0X02; delay(1); }
if(flaga==1) { if(a5==0xff)
{a=a*10+table[num]; azy(); a0=table1[num]; display(); } } else { a=table[num]; a0=table1[num]; display(); flaga=1; } } else {
{ case 0xe0:num=0;break; case 0xd0:num=1;break; case 0xb0:num=2;break; case 0x70:num=3;break;
} while(P3!=0xfe); if(num==0||num==1||num==2) {
panduan(); } else {
b4=b3; b3=b2; b2=b1; b1=b0; } void fuzhi() { a5=b5; a4=b4; a3=b3; a2=b2; a1=b1; a0=b0; } void qh() { a0=table2[c%10]; a1=table2[(c/10)%10]; a2=table2[(c/100)%10]; a3=table2[(c/1000)%10]; a4=table2[(c/1000)%10]; a5=table2[(c/10000)%10]; } void panduan() { if(flag==0) {
if(a5!=table2[0]||a4!=table2[0]||a3!=table2[0]) {P2=0x00; P0=a3; P2=0X04; delay(1); }
if(a5!=table2[0]||a4!=table2[0]||a3!=table2[0]||a2!=table2[0]) {P2=0x00; P0=a2; P2=0X08; delay(1); }
相关文档
最新文档