速算,简易计算器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语言制作简单的计算器在计算机编程领域中,C语言是一种广泛使用的编程语言之一。
它具有简单易学的特点,并且能够进行复杂的计算和逻辑处理。
今天,我们就来学习一下如何使用C语言来制作一个简单的计算器。
首先,我们需要明确我们计算器的功能和界面设计。
本次制作的计算器将具有基本的四则运算功能,即加法、减法、乘法和除法。
我们将在控制台中实现计算器的操作,并通过简单的用户界面进行交互。
接下来,我们需要创建一个C语言程序的框架。
首先,我们需要包含头文件,以便在程序中使用各种函数和变量。
我们可以使用"#include" 来引入头文件,例如:```c#include <stdio.h>```然后,我们需要定义主函数 `main()`。
在这个函数中,我们将编写计算器的逻辑代码。
让我们开始编写函数吧!首先,我们需要声明一些变量来存储用户输入的数字和运算符。
我们可以使用 `int` 来定义整数变量,并用 `char` 定义字符变量。
例如:```cint num1, num2, result;char operator;```接下来,我们需要提示用户输入要进行的运算,并读取用户输入的数字和运算符。
我们可以使用 `printf` 和 `scanf` 函数来完成这个任务,例如:```cprintf("请输入第一个数字: ");scanf("%d", &num1);printf("请输入运算符(+, -, *, /): ");scanf(" %c", &operator);printf("请输入第二个数字: ");scanf("%d", &num2);```注意,我们在读取运算符之前添加了空格,这是为了消除输入缓冲区中可能残留的换行符等字符。
接下来,我们需要编写代码来进行实际的计算操作。
C语言计算器文档
C语言计算器文档
一、简介
C语言计算器是一款采用C语言开发的免费计算器,用户可以使用它
来执行基本的数学计算,包括简单的加减乘除,以及乘方、平方根等更高
级的运算。
C语言计算器的实现相对简单,但它具有良好的扩展性,功能
强大。
此外,还添加了注释功能,方便用户理解每一行代码的功能及实现。
1、基本运算:它能够实现基本的运算,包括加减乘除、乘方、平方
根等。
2、复杂运算:它还能够实现复杂的运算,比如三角函数运算,对数、指数等。
3、可视化界面:它提供一个可视化的界面,支持用户直观的计算、
显示计算结果,并可以方便地查看历史记录。
4、注释功能:它提供注释功能,用户可以添加注释,方便理解每一
行代码的功能及实现,更好地使用计算器。
二、实现原理
1、字符串处理:由于C语言计算器的输入是字符串,因此首先要对
用户输入的字符串进行解析,把字符串拆分为数学运算符、数字和其他字
符等部分,以便后续的计算。
2、数学函数:拆分完字符串之后。
用C语言编写简易计算器
• 选择9,程序如图: 程序大致与8的 理解一样。
选择10与11,程序如图:
程序:
如果选择7的话,就直接把输出的格式声明直 接由%d改成%x就行了,编译器会自己变换 ;程序如下:
如果选择8,程序如图: 我们用一个数组来储放 一个二进制数,先用 第一个for语句来使数 组的位数发生改变。 如输入1111010,在 数组中的第一个1是第 0位,但是在二进制中 它是最高位,所以经 过for语句后我们就把 它的位数由低变高了 ,然后再运算。
先输入一个数值判断数是不是大于2如果是再判断数除以2后的余数是不是等于零如果是就把1赋给数组元素否则就把0赋给数组元素
用C语言编写简易计算器
1302班,许创斌、叶立伟、张友学 制作
1. 程序的大概 2. 程序的讲解 3. 程序源代码
程序o.....while语句;使其只 要我们输入的选择不是12就一直循环。 2.在程序中我们还用到了清屏函数,其作用就是把 之前显示在控制台(程序运行后弹出来那个黑色 窗口)的东西全清掉(类似于 擦黑板:),用清 屏函数时,记得要把头文件 stdlib.h写上.
程序的讲解
• 首先我们在主函数 main()的开头,我们先 用函数printf向显示器 输出你将进行运算的 选项供你选择。如图 :
• 接下来,我们用switch 语句根据你的选择, 使流程跳转到不同的 语句。如:
• 如果你输入的选择是 在1~5之间,那么程序 如图: • 因为都是输入2个数, 所以我们
把放在switch的前面;
如果你选择6,程序如图: 先输入一个数值,判断数 是不是大于2,如果是, 再判断数除以2后的余数 是不是等于零,如果是, 就把‘1’赋给数组元素 ,否则就把‘0’赋给数 组元素;然后把数值除以 2,再依次循环以上步骤 。如果数值不大于2,就 直接把‘1’赋给数组元 素。最后把数组输出,即 得到二进制的数。
速算,简易计算器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语⾔计算器的代码。
计算器实现的功能有:加、减、乘、除、求余。
功能简单,但对于初学者的我来说能把它写出来,排除每个错误依旧是个难题。
前后两种代码是由⾃⼰所学东西的质量决定的,如有错误,请前辈指出。
最初版本的计算器: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语言也可以进行加减乘除运算,但是运算符号与数学中的略有不同。
下面一起来看看!加号、减号与数学中的一样,乘号、除号不同,另外C语言还多了一个求余数的运算符。
我们先来看一段代码:#include#includeint main(){ int a=12; int b=100; float c=8.5; int m=a+b; float n=b*c; double p=a/c; int q=b%a; printf("m=%d, n=%f, p=%lf, q=%d ", m, n, p, q); system("pause"); return 0;} 输出结果:m=112, n=850.000000, p=1.411765, q=4你也可以让数字直接参与运算:#include#includeint main(){ int a=12; int b=100; float c=8.9; int m=a-b; // 变量参与运算 int n=a+239; // 有变量也有数字 double p=12.7*34.3; // 数字直接参与运算 printf("m=%d, n=%d, p=%lf ", m, n, p); printf("m*2=%d, 6/3=%d, m*n=%ld ", m*2, 6/3, m*n); system("pause"); return 0;}输出结果:m=-88, n=251, p=435.610000m*2=-176, 6/3=2, m*n=-22088对于除法,需要注意的'是除数不能为0,所以诸如int a=3/0;这样的语句是错误的。
加减乘除的简写先来看一个例子:#include#includeint main(){ int a=12; int b=10; printf("a=%d ", a); a=a+8; printf("a=%d ", a); a=a*b; printf("a=%d ", a); system("pause"); return 0;}输出结果:a=12a=20a=200第一次输出 a 原来的值;a=a+8;相当于用a+8的值替换原来 a 的值,所以第二次输出20;第三次用a*b的值替换第二次的值,所以是200。
用C实现两个数的加、减、乘、除、取余运算
用C# 实现两个数的加、减、乘、除、取余运算输出结果如下:实现思路:新建一个控制台应用程序C alcu lator。
定义4个变量,分别代表第一个操作数、第二个操作数、计算结果和运算符。
使用if结构判断运算符的类型,进行计算输出。
代码:namesp ace Calcul ator{classProgra m{static void Main(string[] args){double num1, num2, jieguo, yunsua nfu;Consol e.WriteL ine("请输入第一个操作数:");num1 = Conver t.ToDoub le(Consol e.ReadLi ne());Consol e.WriteL ine("请输入第二个操作数:");num2 = Conver t.ToDoub le(Consol e.ReadLi ne());Consol e.WriteL ine("请选择操作符类型(选择1——5中的一个): 1——加法,2——减法,3——乘法,4——除法,5——除余");yunsua nfu = Conver t.ToDoub le(Consol e.ReadLi ne());string fuhao;if (num1 != null && num2 != null && yunsua nfu != null){if (yunsua nfu == 1) { jieguo = num1 + num2; fuhao= "相加"; }else if (yunsua nfu == 2) { jieguo = num1 - num2; fuhao= "相减"; }else if (yunsua nfu == 3) { jieguo = num1 * num2; fuhao= "相乘"; }else if (yunsua nfu == 4) { jieguo = num1 / num2; fuhao= "相除"; }else if (yunsua nfu == 5) { jieguo = num1 % num2; fuhao= "除余"; }else { jieguo = 0; fuhao= "非法运算"; }}else{jieguo = 0; fuhao= "非法运算";}if (fuhao!= "非法运算"){Consol e.WriteL ine("第一个操作数是{0},第二个操作数是{1},两数{2}结果是{3}", num1, num2, fuhao, jieguo);}}}}。
C语言实现简单计算器程序
C语⾔实现简单计算器程序这两天在看⼀个C语⾔写的计算器程序,做了不少的功夫,跟着作者⼀步步的进⾏完善,了解了许多细节性的东西,在此⾃⼰做个总结,加深⾃⼰对程序的印象,也算是梳理。
在该计算器程序,能进⾏加减乘除、sin、cos、exp等操作,同时能进⾏数值保存功能。
⽽该计算器使⽤逆波兰表⽰法。
即所有运算符都跟在操作数的后⾯,⽐如下列表达式:(1 - 2) * (4 + 5)采⽤逆波兰表⽰法表⽰为:1 2 - 4 5 + *逆波兰表达法中不需要圆括号,只要知道每个运算符需要⼏个操作数就不会引起歧义。
计算器程序实现很简单,具体原理如下:while(/* 下⼀个运算符或操作数不是⽂件结束指⽰符 */)if(/* 是数 */)/* 将该数压⼊到栈中 */else if (/* 是运算符 */)/* 弹出所需数⽬的操作数 *//* 执⾏运算 *//* 将结果压⼊到栈中 */else if (/* 是换⾏符 */)/* 弹出并打印栈顶的值 */else/* 出错 */在程序设计中,使⽤模块化思想,getop函数来进⾏读⼊,该函数返回⼀个标识,⽤来标识读⼊的是什么类型。
主循环体中根据该标识执⾏相应的动作。
以下是该程序:(我将所有函数和变量放在同⼀⽂件)#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXOP 100#define NUMBER '0' //标识读⼊的是数字#define NAME 'n' //标识读⼊的是字符串(函数名或⾮法字符串)#define ALPHA 26int getop(char []);void push (double); //压栈double pop(void); //出栈void clear(void); //清空栈void mathfnc(char []); //执⾏相应的数学函数sin、cos、exp等int main(void){int type;int i, var = 0;double op1, op2,v;char s[MAXOP];double variable[ALPHA];for (i = 0; i < ALPHA; i++) //初始化⽤于保存数值的变量数组variable[i] = 0.0;while ((type = getop(s)) != EOF) //读取输⼊{switch (type){case NUMBER:push (atof(s));break;case NAME:mathfnc(s);break;case '+':push (pop() + pop());break;case '*':push (pop() * pop());break;case '-':op2 = pop();push (pop() - op2);break;case '/':op2 = pop();if (op2 != 0.0)push (pop() / op2);elseprintf ("error: zero divisor\n");break;case '%':op2 = pop();if (op2 != 0.0)push (fmod(pop(), op2));elseprintf ("error: zero divisor\n");break;case '?': //打印栈顶元素op2 = pop();printf ("\t%.8g\n", op2);push (op2);break;case '=': //保存数值pop();if (var >= 'A' && var <= 'Z')variable[var - 'A'] = pop();elseprintf ("error: no variable name\n");break;case 'c':clear();break;case 'd': //复制栈顶元素op2 = pop();push(op2);push(op2);break;case 's': //交换栈元素op1 = pop();op2 = pop();push(op1);push(op2);case '\n':v = pop(); //v保存最后的⼀次结果printf ("\t%.8g\n", v);break;default:if (type >= 'A' && type <= 'Z')push(variable[type - 'A']);else if (type == '@') //输⼊的字符@表⽰最近⼀次结果值 push(v);elseprintf ("error: unknown command %s\n", s);break;}var = type;}return 0;}/* ----------------------------------------------------------- */#define MAXVAL 100int sp = 0; //标识栈顶double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf ("error: stack full, can't push %g\n", f);}double pop(void){if (sp > 0)return val[--sp];else{printf ("error: statck empty\n");return 0.0;}}void clear(void){sp = 0;}void mathfnc (char s[]){double op2;if (strcmp (s, "sin") == 0)push(sin(pop()));else if(strcmp (s, "cos") == 0)push(cos(pop()));else if(strcmp (s, "exp") == 0)push(exp(pop()));else if(strcmp (s, "pow") == 0){op2 = pop();push (pow(pop(), op2));}elseprintf ("error: %s not supported\n", s);}/* ----------------------------------------------------------- */#include <ctype.h>int getch(void);void ungetch(int);int getop(char s[]){int i, c;while ((s[0] = c = getch()) == ' ' || c == '\t') //过滤开头的空⽩字符;s[1] = '\0';i = 0;if (islower(c)) //判断是否为⼩写字母,也即读取由⼩写字母组成的字符串 {while (islower(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);if (strlen (s) > 1)return NAME;elsereturn c;}if (!isdigit(c) && c != '.' && c != '-')return c;if (c == '-') //⽤于判断是负数还是减操作{if (isdigit(c = getch()) || c == '.')s[++i] = c;else{if (c != EOF)ungetch(c);return '-';}}if (isdigit(c)) //收集整数部分while (isdigit(s[++i] = c = getch()));if (c == '.') //收集⼩数部分while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);return NUMBER;}/* ----------------------------------------------------------- *//** 引⽤以下两个函数是因为:程序不能确定它已经读⼊的输⼊是否⾜够 ** 除⾮超前多读⼊⼀些输⼊,在本程序中,读⼊⼀些字符合成⼀个数字 ** 所以在看到第⼀个⾮数字字符之前,已经读⼊的数的完整性是不能确定的* 由于程序要超前读⼊⼀个字符,这样就导致最后⼜⼀个字符不属于当前所要读⼊的数*/#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch (int c){if (bufp >= BUFSIZE)printf ("ungetch: too many characters\n");elsebuf[bufp++] = c;}该程序虽然简单,但是还是存在⼀些⼩⼩的问题,⽐如没有数据时进⾏pop的话,会打印栈中⽆数据同时返回数值0.0,在循环体中许多执⾏操作会将该数值保存到栈中,之后打印该值,⽤户体验度⽐较差。
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编写简易计算器附源代码超详细
超详细一、因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:二、向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow ,按键0~9为Button控件,并将其name分别修改为btn_0、btn_1、btn_2、btn_3、btn_4、btn_5、btn_6、btn_7、btn_8、btn_9;按键【负数】的name值修改为btn_sign,按键【.】的name 修改为btn_dot,按键【+ - * /】的name值分别修改为btn_add、btn_sub、btn_mul、btn_div,按键【=】的name值修改为btn_equ,按键【倒数】的name值修改为btn_rev,按键【平方】的name值修改为btn_sqr,按键【开方】的name值修改为btn_sqrt。
右边的计算器图片空间是PictureBox,作者博客控件是LinkLabel,可以不添加,以上所有控件均可按照需求添加,只保留自己需要的按钮控件和textbox控件即可。
三、代码部分(含解释),采用switch多分支语句编写using System;using System.Drawing;using System.Collections;using ponentModel;using ;using System.Data;namespace Calc{///<summary>/// QQ:6 温柔一刀C#简易计算器的实现///</summary>public class CalcForm :{private btn_0;private btn_1;private btn_2;private btn_3;private btn_4;private btn_5;private btn_6;private btn_7;private btn_8;private btn_9;private btn_add;private btn_sub;private btn_mul;private btn_div;private btn_sqrt;private btn_sign;private btn_equ;private btn_dot;private btn_rev;private txtShow;private btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;///<summary>///必需的设计器变量。
微机简单计算器程序设计
微机简单计算器程序设计一、问题分析计算器是一种常见的应用程序,可以进行基本的数学运算。
简单计算器可以进行加法、减法、乘法和除法运算,用户可以输入两个数字和运算符,计算器将显示计算结果。
二、需求分析1.用户可以输入两个数字和运算符。
2.计算器可以进行加法、减法、乘法和除法运算。
3.计算器可以显示计算结果。
三、设计思路1.接收用户输入的两个数字和运算符。
2.根据运算符进行相应的运算。
3.显示计算结果。
四、程序设计下面是一个使用C语言编写的简单计算器程序:```c#include <stdio.h>int maifloat num1, num2, result;char operator;printf("请输入两个数字和运算符(例如:2 + 5):"); scanf("%f %c %f", &num1, &operator, &num2);switch (operator)case '+':result = num1 + num2;printf("%.2f + %.2f = %.2f\n", num1, num2, result); break;case '-':result = num1 - num2;printf("%.2f - %.2f = %.2f\n", num1, num2, result); break;case '*':result = num1 * num2;printf("%.2f * %.2f = %.2f\n", num1, num2, result); break;case '/':if (num2 != 0)result = num1 / num2;printf("%.2f / %.2f = %.2f\n", num1, num2, result);} elseprintf("错误:除数不能为0\n");}break;default:printf("错误:无效的运算符\n");}return 0;```五、程序运行1.编译程序并运行。
C语言简单加减乘除运算
/////////////////////////////////////简单运算加减乘除(C语言)//运行环境VC6.0//作者:summer////////////////////////////////////#include<stdio.h>#include<stdlib.h>#include<time.h>int k;EXIT(){exit(0);}void list_menu1(){printf("------------------------\n");printf("<*** 1.加法运算***>\n");printf("<*** 2.减法运算***>\n");printf("<*** 3.乘法运算***>\n");printf("<*** 4.除法运算***>\n");printf("<*** 5.退出***>\n");printf("------------------------\n");}void list_menu2(){printf("*************************\n");printf("*** 1.0-9运算***\n");printf("*** 2.0-99运算***\n");printf("*************************\n"); }/*生成随机数*/int num0_9(){return(rand()%10);}int num0_99(){return(rand()%100);}/*加法运算*/void add1(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){x=num0_9();y=num0_9();printf("%d+%d=",x,y);scanf("%d",&sum);if(sum==x+y){printf("Ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x+y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}void add2(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){x=num0_99();y=num0_99();printf("%d+%d=",x,y);scanf("%d",&sum);if(sum==x+y){printf("Ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x+y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}/*减法运算*/void sub1(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){x=num0_9();y=num0_9();printf("%d-%d=",x,y);scanf("%d",&sum);if(sum==x-y){printf("ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x-y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}void sub2(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){x=num0_99();y=num0_99();printf("%d-%d=",x,y);scanf("%d",&sum);if(sum==x-y){printf("ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x-y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n"); }/*乘法运算*/void mul1(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){x=num0_9();y=num0_9();printf("%d*%d=",x,y);scanf("%d",&sum);if(sum==x*y){printf("Ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x*y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}void mul2(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){x=num0_99();y=num0_99();printf("%d*%d=",x,y);scanf("%d",&sum);if(sum==x*y){printf("Ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x*y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}/*除法运算*/void div1(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){do{x=num0_9();y=num0_9();}while(y==0);printf("%d/%d=",x,y);scanf("%d",&sum);if(sum==x/y){printf("Ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x/y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}void div2(){int x,y,sum;int i;int count=0;for(i=1;i<=k;i++){do{x=num0_99();y=num0_99();}while(y==0);printf("%d/%d=",x,y);scanf("%d",&sum);if(sum==x/y){printf("Ture!\n");count++;}elseprintf("error!正确答案是:%d\n",x/y);}printf("corret rate is %.2f\n",count/(k*1.0));if(count/(k*1.0)>0.9)printf("very good!\n");elseprintf("还要继续训练才行啊!\n");}/*主函数*/main(){void add1();void add2();int num0_9(),num0_99();int n,m;printf("请输入你要做的题数\n");scanf("%d",&k);do{list_menu1();scanf("%d",&n);getchar();switch(n){case 1:list_menu2();scanf("%d",&m);getchar();switch(m){case 1:add1();break;case 2:add2();break;}break;case 2:list_menu2();scanf("%d",&m);getchar();switch(m){case 1:sub1();break;case 2:sub2();break;}break;case 3:list_menu2();scanf("%d",&m);getchar();switch(m){case 1:mul1();break;case 2:mul2();break;}break;case 4:list_menu2();scanf("%d",&m);getchar();switch(m){case 1:div1();break;case 2:div2();break;}break;case 5:printf("谢谢使用!\n");}}while(n!=5);}该程序比较简单,学MFC后做一个界面,实现混合运算,函数sin,con.tan等运算,还可以实现进制转换。
C语言实现简单的计算器(加、减、乘、除)
C语⾔实现简单的计算器(加、减、乘、除) 利⽤运算符做为swich case 语句条件,实现简单程序的编写;并且对输⼊的运算做判断,除数为零也需做判断;1 #include<stdio.h>23int add(int a, int b);4int sub(int a, int b);5int mul(int a, int b);6int div(int a, int b);789int main(int argc, const char *argv[])10 {11/*12 * 定义接收变量,运算字符;13*/14int a,b,d;15char ch;1617/*18 * 赋初值19*/20 a = 0;21 b = 0;22 ch = '0';232425/*26 * 控制台输⼊运算变量,运算符;27*/28 printf("请输⼊需要计算的数及运算符;格式如:'num1 +-x/ num2' \n");29 scanf("%d%c%d",&a,&ch,&b);3031/*32 * 输⼊数据判断33*/34while((ch != '+')&&(ch != '-')&&(ch != '*')&&(ch != '/'))35 {36//fflush(stdin);此种清空缓冲区⽆效37 setbuf(stdin,NULL);38 printf("输⼊运算符有误,请重新输⼊:\n");39 scanf("%c",&ch);40 }4142/*43 * 除数为0做判断44*/45if((ch == '/')&&(b==0))46 {47 setbuf(stdin,NULL);48 printf("除数不能为0,请重新输⼊:\n");49 scanf("%d",&b);50 }515253/*54 * 识别不同运算字符,做不同的运算;55*/56switch(ch)57 {58case'+':59 printf("%d+%d=%d\n",a,b,add(a,b));60break;61case'-':62 printf("%d-%d=%d\n",a,b,sub(a,b));63break;64case'*':65 printf("%d*%d=%d\n",a,b,mul(a,b));66break;67case'/':68 printf("%d/%d=%d\n",a,b,div(a,b));69break;70default:71 printf("Error\n");72 }7374return0;75 }7677/*78* 定义运算函数79*/80int add(int a, int b) 81 {82return a+b;83 }8485int sub(int a, int b) 86 {87return a-b;88 }8990int mul(int a, int b) 91 {92return a*b;93 }9495int div(int a, int b) 96 {97return a/b;98 }。
C语言实现计算器,附源码,超简单!
20
// 下面这得注意,接收double型的数据得用lf%,接收float用f%
21
scanf("%lf",&x1);
22
23
printf("请输入运算操作(+ - * /):\n");
24
m = getche();
25
printf("\n");
26
27
printf("请输入第二个数:\n");
28
40
result = x1 - x2;
41
printf("%lf - %lf = %lf\n",x1,x2,result);
42
break;
43
44
case '*':
45
printf("乘法\n");
46
result = x1 * x2;
47
printf("%lf * %lf = %lf\n",x1,x2,result);
scanf("%lf",&x2);
29
30
switch(m)
31
{
32
case '+':
33
printf("加法\n");
34
result = x1 + x2;
35
printf("%lf + %lf = %lf\n",x1,x2,result);
36
break;
37
38
case '-':
用c#实现简易的计算器功能实例代码
⽤c#实现简易的计算器功能实例代码由于今天在⽹上搜了⼀下c#写的计算器,发现⼤多都太繁琐了,很多没必要并且不容易理解的东西就专门写了这个博客1.⾸先新建⼀个windows窗体应⽤的项⽬。
执⾏⽂件-新建-项⽬-windows窗体应⽤2.在⼯具箱中拖出⼀个textbox⽤于输⼊和显⽰,再拖出21个button按钮⽤来当计算器的按键,在textbox下⾯还有⼀个lable控件(我把它属性改成了空格所以看不到了),改⼀下按钮的text属性3.双击数字按钮进⼊代码界⾯(数字只⽤⼀个事件即可,运算符也是⽤⼀个事件,其他每个按钮都需要双击添加事件)4.代码呢已经准备好了,只要双击按钮进⼊代码界⾯,然后对应着粘上就⾏了(注意所有数字都是⽤的⼀个事件,都有标注,可以选择按钮,然后单击属性⾥的事件(闪电图标)查看click的事件)using System;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 计算器{public partial class Form3 : Form{public Form3(){InitializeComponent();}//定义变量char oper;double num1;double num2;double result = 0;double memory=0.0;private void Button9_Click(object sender, EventArgs e)//数字按钮的功能实现{Button a = (Button)sender;//判断按下的是哪个按钮if (textBox1.Text == “0”){textBox1.Text = a.Text;}elsetextBox1.Text += a.Text;}private void Button16_Click(object sender, EventArgs e)//运算符按钮的功能实现{if (textBox1.Text != ""){num1 = double.Parse(textBox1.Text);oper = char.Parse(((Button)sender).Text);textBox1.Text = "";}}private void Button15_Click(object sender, EventArgs e)//C按钮的功能实现{textBox1.Text = "";textBox1.Focus();num1 = 0;num2 = 0;oper = ' ';}private void Button14_Click(object sender, EventArgs e)//结果按钮的功能实现{if (textBox1.Text != ""){num2 = double.Parse(textBox1.Text);switch (oper){case '+': result = num1 + num2; break;case '-': result = num1 - num2; break;case '*': result = num1 * num2; break;case '÷': result = num1 / num2; break;}textBox1.Text = result.ToString();}}private void Button17_Click(object sender, EventArgs e)//⼩数点按钮的功能实现{if (textBox1.Text != ""){textBox1.Text += ".";}else{textBox1.Text = "0.";}}private void Button18_Click(object sender, EventArgs e)//M+按钮的功能实现{if(textBox1.Text!=""){label1.Text = "M";memory += double.Parse(textBox1.Text);textBox1.Text = " ";}}private void Button20_Click(object sender, EventArgs e)//MR按钮的功能实现{textBox1.Text = memory.ToString();}private void Button21_Click(object sender, EventArgs e)//MC按钮的功能实现{label1.Text = "";memory = 0;}private void Button19_Click(object sender, EventArgs e)//M-按钮的功能实现{if (textBox1.Text != ""){label1.Text = "M";memory -= double.Parse(textBox1.Text);textBox1.Text = " ";}}}以上所述是⼩编给⼤家介绍的c#实现简易的计算器功能详解整合,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("|---------退出游戏请按其他键-------------|\n");
printf("-----------------------------------------\n");
scanf("%c",&ch);
}
while(1)
{
printf("-----------------------------------------\n");
printf("|-----------欢迎来到速算24--------------|\n");
printf("|----------是否开始游戏?????------------|\n");
case '(':
{
if(b==')')
temp='=';
else
temp='<';
}break;
case ')':temp='>';break;
case '#':
{
if(b=='#')
temp='=';
else temp='<';
}break;
default break;
}
return temp;
#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;
if(ch=='Y' or ch=='y')
{
}
else
break;
}
}
int EvaluateExpression()
{
//算术表达式求值的算符优先算法。设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符集合。
InitStack(OPTR);
Push(OPTR,'#');
InitStack(OPND);
{
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)
Push(OPTR,c);
c = getchar();
break;
case '=': //脱括号并接收下一字符
Pop(OPTR,x); c = getchar();
break;
case '>': //退栈并将运算结果入栈
Pop(OPTR,theta);
Pop(OPND,b);
Pop(OPND,a);
{
char temp;
switch(a)
{
case '+','-':
{
if (b=='*' or b=='/' or b=='(')
temp='<';
else temp='>';
}break;
case '*','/':
{
if(b=='(')
temp='<';
else temp='>';
}break;
{
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 tem);
while(c!='#' || GetTop(OPTR)!='#')
{
if(!In(c,OP))
{
Push((OPND,c);
c = getchar();
} //不是运算符则进栈
else
switch(Precede(GetTop(OPTR),c))
{
case '<': //栈顶元素优先权低
Push(OPND,Operate(a,theta,b));
break;
}// switch
}// while
return GetTop(OPND);
}// EvaluateExpression
int changecard( char a[])
{
if()
}
void InitStack(Stack &S)
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)//算符优先级函数