×

混合计算器

用C语言做一个计算器,能实现加减乘除混合运算?怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器

fwxlw fwxlw 发表于2025-02-24 15:55:56 浏览11 评论0

抢沙发发表评论

本文目录

用C语言做一个计算器,能实现加减乘除混合运算

是的,可以使用C语言编写一个计算器程序,能够实现加、减、乘、除等混合运算。下面是一个简单的示例程序:```c#include 《stdio.h》int main() { char operator; double num1, num2, result; printf("Enter an operator (+, -, *, /): "); scanf("%c", &operator); printf("Enter two numbers: "); scanf("%lf %lf", &num1, &num2); switch (operator) { case ’+’: result = num1 + num2; break; case ’-’: result = num1 - num2; break; case ’*’: result = num1 * num2; break; case ’/’: if (num2 == 0) { printf("Error: division by zero!\n"); return -1; } result = num1 / num2; break; default: printf("Invalid operator!\n"); return -1; } printf("%.2f %c %.2f = %.2f\n", num1, operator, num2, result); return 0;}```此程序首先提示用户输入一个操作符(+、-、* 或 /),然后提示用户输入两个数字,最后根据操作符执行相应的计算并输出结果。注意,这个程序还包含了一些错误处理代码,例如当用户试图除以零时会给出错误提示。

怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器

用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器的方法:

1、打开visual C++ 6.0-文件-新建-文件-C++ Source File;

2、输入预处理命令和主函数:

#include《stdio.h》 /*函数头:输入输出头文件*/

void main()/*空类型:主函数*/

3、定义变量:

int a,b,d; /*定义变量的数据类型为整型*/

char c;/*定义变量的数据类型为字符型*/

4、输入四则运算式:

printf("输入如“3*4”或“5+2”的四则运算式:");/*输出文字提示*/

scanf("%d%c%d",&a,&c,&b);/*输入四则运算式*/

5、判断运算符号:

switch(c) /*判断运算符号*/

{

case’+’:d=a+b;break;/*进行加法运算*/

case’-’:d=a-b;break;/*进行减法运算*/

case’*’:d=a*b;break;/*进行乘法运算*/

case’/’:d=a/b;break; /*进行除法运算*/

}

6、输出结果:

printf("%d%c%d=%d\n",a,c,b,d);/*输出结果*/

完整的源代码:

#include《stdio.h》 /*函数头:输入输出头文件*/

void main()/*空类型:主函数*/

{

int a,b,d;/*定义变量的数据类型为整型*/

char c;/*定义变量的数据类型为字符型*/

printf("输入如“3*4”或“5+2”的四则运算式:");/*输出文字提示*/

scanf("%d%c%d",&a,&c,&b);/*输入四则运算式*/

switch(c)/*判断运算符号*/

{

case’+’:d=a+b;break;/*进行加法运算*/

case’-’:d=a-b;break;/*进行减法运算*/

case’*’:d=a*b;break;/*进行乘法运算*/

case’/’:d=a/b;break;/*进行除法运算*/

}

printf("%d%c%d=%d\n",a,c,b,d);/*输出结果*/

}

用计算器进行混合计算的按键顺序与书写顺序基本是什么

如果你使用多功能的计算器。这个须序就是你书写的顺序。这个包括括号的运用,他的运算规则是,先乘除后加减。

计算器如何进行混合运算

科学计算器会自动按从高级到低级的运算,有括号先算括号里面的,简单计算器不好混合运算。

如何使用计算器进行混合运算

使用计算器进行混合运算的方法如下:1、有一个简单的计算器,显示屏幕比较大,而且按键比较大,比较简单,可以非常快的使用乘除混合运算。2、可以将如下的一道题进行一次性运算:“(101*273)-(458/34)=”3、一般来说,要先计算“(101*273)=”得出结果,并记录在纸上,用作后面使用。4、接着将“(458/34)=”的答案计算出来,又写在纸上,并将前后的结果进行减法运算,速度比较慢,而且会出现错误的概率高。5、采用计算器一次性计算就比较简单,充分利用好"M+"和"M-"这个按键的作用,进行混合运算。6、按键的次序是:第一“101*273”之后,再次按住"M+"按键,接着再按“458/34”和"M-"的按键,最后按”MRS"结果就出来了,不需要用纸记录。7、使用计算器的步骤很简单,就是要比较操作的娴熟程度,尤其要理解"M+"和"M-"\”MRS"的时候,它都是要让前面的计算结果进行了记忆并运算了。

用C语言编写可以进行加减乘除整数运算混合运算的计算器,要求写思路,越详细越好,初学者,不要很复杂的

#include 《cstdlib》

#include 《iostream》

using namespace std;

int main()

{

int a,b;//a是输出结果,b是临时输入数据

char x;//x是标点符号输入

cin》》a;//先输入第一个数

while(1)//由于不知道运算式一共多长,所以用一个死循环不断读取

{

cin》》x;//输入运算符

if(x==’=’)//’=’特殊处理,输出结果

{

cout《《a《《endl;

break;//退出循环,跳到return 0;

}

else//如果是运算符就输入下一个数

{

cin》》b;

switch(x)//判断符号类型,并进行相应计算

{

case ’+’:a+=b;break;//每个case后面必须加break;否则将后面所有运算式全走一遍

case ’-’:a-=b;break;

case ’*’:a*=b;break;

case ’/’:a/=b;break;

}

}

}

    return 0;

汗,又改变条件了,这次你的要求和原来要求可是截然不同的程序啊,涉及到很多算法的,二叉树,堆栈等,我如果重写了初学者不一定能看懂了。我下面就给你贴一下差不多的代码吧。只是这个不需要输入等号,回车自动计算。如果需要去掉那些繁琐的代码估计没人为了这几个虚拟分给你去掉的。

  #include《iostream》   

  #include《string》   

  #include《stack》   

  #include "Tree.h"

  #include《windows.h》

  bool   isok(string   exp)                                               //此函数验证式子是否正确,即是否符合运算规则。   

{   

char   check;   

int   error=0;   

int   lb=0;   

int   rb=0;   

if(exp.size()==1 && exp!=’-’)return   false; 

else   if((IsOperator(exp!=’)’)         //此处若不加,在遇到某些式子时,会出现非法操作。   

return   false;   

for(int   m=0;m《exp.size();m++)   

{   

check=exp; 

if(m==0 && check==’-’ && (isdigit(exp;

if(IsOperand(check));                         //如果是数字,跳过,不管。   

else   if(IsOperator(check))   

{   

if(check==’)’)   

{   

rb++;   

if(IsOperator(exp==’)’))   

{   

m++;   

if(exp==’)’)   

rb++;   

}   

else   if(IsOperator(exp))   

error++;   

}

else   if(check==’(’)   

{   

lb++;   

if(exp==’(’)   

{   

m++;   

lb++;   

}   

else   if(IsOperator(exp!=’-’)   

error++;   

}   

else   

{   

if(IsOperator(exp==’(’)   

{   

m++;   

lb++;   

}   

else   if(IsOperator(exp))   

error++;   

}   

}   

else   

error++;   

}   

if(error==0&&lb==rb)   

return(true);   

else   

return(false);   

}   

  int   main()

  {

  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); 

  SetConsoleTitle("四则运算器二叉树版");

  SetConsoleTextAttribute(hOut,BACKGROUND_GREEN+FOREGROUND_BLUE);

  binary_tree   etree;   

  stack《binary_tree》NodeStack;   

  stack《char》OpStack;   

  string   infix;   

  char   choice=’y’; 

  system("cls");

  cout《《"*******************************************************************"《《endl;

  cout《《"*                                                                 *"《《endl;

  cout《《"*   十进制四则运算计算器      ※※※※※※※※※※※※    *"《《endl;

  cout《《"*                      ※                    ※    *"《《endl;

  cout《《"*        (二叉树版)              ※※※※※※※※※※※※    *"《《endl;

    cout《《"*                                                                 *"《《endl;

  cout《《"*******************************************************************"《《endl;

  char   c;   

  while(choice==’y’||choice==’Y’)   

{   

cout《《"\n请输入表达式,不要带空格:\n";   

        cin》》infix;   

        cout《《"--------------------------------------------------------------------------------"《《’\n’;   

        cout《《"表达式为:         "《《infix《《’\n’;   

if(isok(infix))   

{   

for(int   i=0;i《infix.size();i++)   

{   

c=infix; 

if(i==0 && c==’-’) //若开始为负,则把零压入运算数栈,把’-’压入运算符栈

{

binary_tree   temp;   

temp.root=build_node("0");  

NodeStack.push(temp); 

OpStack.push(’-’);

}

else

if(IsOperand(c))   

{   

string   tempstring;   

tempstring=tempstring+c; 

while(i+1《infix.size()&&IsOperand(infix))   

{   

tempstring+=infix;   

}   

binary_tree   temp;   

temp.root=build_node(tempstring);   

NodeStack.push(temp);   

}   

else   if(c==’+’||c==’-’||c==’*’||c==’/’||c==’^’)   

{   

if(OpStack.empty())   

OpStack.push(c);   

else   if(OpStack.top()==’(’)   

OpStack.push(c);   

else   if(TakesPrecedence(c,OpStack.top()))   

OpStack.push(c);   

else   

{   

while(!OpStack.empty()&&(TakesPrecedence(OpStack.top(),c)||addition(OpStack.top(),c)))   

{   

binary_tree   temp_tree;   

string   thisstring="";   

thisstring=thisstring+OpStack.top();   

OpStack.pop();   

etree.root=build_node(thisstring);   

copy(temp_tree.root,NodeStack.top().root);   

NodeStack.pop();   

etree.root-》right_child=temp_tree.root;   

temp_tree.root=NULL;   

copy(temp_tree.root,NodeStack.top().root);   

etree.root-》left_child=temp_tree.root;   

NodeStack.pop();   

temp_tree.root=NULL;   

copy(temp_tree.root,etree.root);   

NodeStack.push(temp_tree);   

etree.root=NULL;   

}   

OpStack.push(c);   

}   

    

}   

else   if(c==’(’)    //若中间遇到括号,则判断下一位是否为’-’

{OpStack.push(c);

 if(infix==’-’)

{

binary_tree   temp;

temp.root=build_node("0"); 

NodeStack.push(temp);

OpStack.push(’-’);

++i;

}

}   

else   if(c==’)’)   

{   

while(OpStack.top()!=’(’)   

{   

binary_tree   temp_tree;   

string   thisstring="";   

thisstring=thisstring+OpStack.top();   

OpStack.pop();   

etree.root=build_node(thisstring);   

copy(temp_tree.root,NodeStack.top().root);   

NodeStack.pop();   

etree.root-》right_child=temp_tree.root;   

temp_tree.root=NULL;   

copy(temp_tree.root,NodeStack.top().root);   

etree.root-》left_child=temp_tree.root;   

NodeStack.pop();   

temp_tree.root=NULL;   

copy(temp_tree.root,etree.root);   

NodeStack.push(temp_tree);   

etree.root=NULL;   

}   

OpStack.pop();   

}   

}   

  ////////////////////////////////////////////////////////   

while(!OpStack.empty())   

{   

        binary_tree   temp_tree;   

        string   thisstring="";   

        thisstring=thisstring+OpStack.top();   

        OpStack.pop();   

        etree.root=build_node(thisstring);   

        copy(temp_tree.root,NodeStack.top().root);   

        NodeStack.pop();   

        etree.root-》right_child=temp_tree.root;   

        temp_tree.root=NULL;   

        copy(temp_tree.root,NodeStack.top().root);   

        etree.root-》left_child=temp_tree.root;   

        NodeStack.pop();   

        temp_tree.root=NULL;   

        copy(temp_tree.root,etree.root);   

        NodeStack.push(temp_tree);   

        if(!OpStack.empty())   

{   

etree.root=NULL;   

}   

}   

cout《《"打印结点如下:         ";   

etree.print();   

cout《《’\n’;   

cout《《"结点个数为:"《《etree.counter()《《’\n’;   

cout《《"以下是,中间的计算结果:"《《’\n’;

etree.evaluate();

cout《《’\n’;

cout《《"结果是:     ";

cout《《etree.root-》data《《’\n’;

    cout《《’\n’《《"--------------------------------------------------------------------------------"《《’\n’;   

cout《《"\n\n是否要重新运行?输入《Y/N》: ";

cin》》choice;

  }   

  else

{   

cout《《"************************************************"《《’\n’;   

cout《《"错误:输入的表达试有误!"《《’\n’;   

cout《《"************************************************"《《’\n’;   

cout《《"\n\n是否要重新运行?输入《Y/N》: ";   

cin》》choice;   

}   

  }   

  return   0;   

  } 

课程设计报告

设计题目:十进制四则运算计算器

实习目的

通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

二.问题描述

在以二叉树表示算术表达式的基础上,设计一个十进制的四则运算的计算器。实现整数浮点数的四则运算。

三.需求分析

   该程序实现的是实数型的四则运算,并在此运算上又加入了幂”^”运算,该程序用一二叉树表示整个输入的算术表达式:

(1)实现对结点的打印,便于结果分析;

(2)实现对结点的统计;

(3)实现中间结果的显示,可以看打印的结点,验证运算结果的正确与否。

四.概要设计

系统用到的抽象数据类型定义:

1.ADT node_type{

   数据对象V:一个集合,该集合中的所有元素具有相同的特性

   数据关系R:R={VR}

               VR={《x,y》|P(x,y)^(x,y属于V)}

   基本操作:

(1)node_type(string   k);

操作结果:对结点进行初始化

}ADT node_type

     2.ADT binary_tree{

           数据对象D:一个集合,该集合中的所有元素具有相同的特性

           数据关系R:若D为空,则为空树。若D中仅含有一个数据元素,则R为空集,否则R={H},H为如下二元关系:

(1)在D中存在唯一的称为根的数据元素root,它在关系H中没有前驱

(2)除root以外,D中每个结点在关系H下有且仅有一个前驱。

           基本操作:

(1)print(node_type   *r)CopyTimeTree(p,q);

操作结果:对结点进行打印

(2)evaluate(node_type   *prt);

操作结果:对一二叉树进行计算

(3)counter();

操作结果:计算一棵二叉树中的结点个数

}ADT binary_tree

系统中子程序及功能要求:

1.ADT node_type  build_node(string   x):建立一个结点

2.addition(char   OperatorA,char   OperatorB):判断两操作符是否相等,若相等返回True

3.TakesPrecedence(char OperatorA,char OperatorB):判别符号的优先级。A》B,返回为TRUE

4.copy(ADT node_type *&r1, ADT node_type *r2):拷贝整个二叉树

5.isok(string   exp):验证表达式是否输入正确,若正确返回TRUE

五.测试分析(运行结果)

第一个表达式:10-(-3)*(((21+3/5)*8/3)*(-2))

第二个表达式:-(32.7-3210.3)/((8.0+0.9)*8.9)+4.4

依次把运算符和操作数放入堆栈中,过程中依次把中间运算结果打印出来

用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器

/* Note:Your choice is C IDE */#include "stdio.h"#include "stdlib.h"#include "ctype.h"int n=0;char record;float product();float change();float muli(){float summ;summ=product();while(record==’+’){switch(record){case ’+’:n++;summ+=product();break;case ’-’:n++;summ-=product();break;}}return summ;}float product(){float sump;sump=change();while(record==’/’){switch(record){case ’*’:n++;sump*=change();break;case ’/’:n++;sump/=change();break;}}return sump;}float change(){float sumc;char rec,i=0;if(record==’(’){n++;sumc=muli();}if(record==’)’) n++; while(isdigit(record==’.’) { while(isdigit(record==’.’) rec; rec=’\0’; sumc=atof(rec); } return sumc;}void main(){while(1){n=0;scanf("%s",record);printf("%s=%g\n",record,muli());} }这个是比较简单的。。。但是有点难理解。。。不过运行绝对正确。。还支持括号。。。但是在这个程序里面我加没有出错处理。。。另一种方法是用栈写。。。这个好理解。。但是麻烦。。。

哪款计算器软件可以计算余数

雨林物语四则混合计算器 v1.0等级: 雨林物语四则混合计算器,一款可以计算余数和整除的计算器。直接自动计算余数,且不占大量内存,速度加快,去除按键计算器,改为全新自由输入。

小数分数混合运算计算器

1、打开计算器,首先按“SHIFT”键。2、再按“MODESETUP”键。3、第一条“1:MthI0”和第二条“2:LineI0”。“1:MthI0”----以分数格式显示,即“7/8”。“2:LineI0”----以线性格式显示,即“0.875”。