用汇编语言编写计算器B_P EQU BYTE PTR W_P EQU WORD PTR D_P EQU DWORD PTR CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H ;主程序开始 NEWSTAR: JMP STAR EVEN NUM1 DW
计算器代码怎么写,要求能加减乘除,能实现进制转换,能解一元二次方程
用C语言做一个计算器,能实现加减乘除混合运算
用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器的方法:
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File;
2、输入预处理命令和主函数:
#include
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
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);/*输出结果*/
}
求用C语言编写一简单计算器程序,要求:实现简单地加减乘除就行了
#include
intjisuan(inta,intb,charfu)
{
if(fu=='+')returna+b;
if(fu=='-')returna-b;
if(fu=='*')returna*b;
if(fu=='/')returna/b;
}
intfun(char*ss,intn)
{
inti,flag=0;
if(n==1)returnss[0]-'0';
for(i=0;i{
if((ss[i]=='+')||(ss[i]=='-'))//扫描加减号
{
flag=1;
returnjisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i]);
}
}
if(flag==0)//如果算数中没有+-
{
for(i=0;iif((ss[i]=='*')||(ss[i]=='/'))
{
returnjisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i]);
}
}
}
voidmain(void)
{
chars[50];
intn;
printf("输入算数:");
scanf("%s",s);
n=strlen(s);
printf("=%d\r\n",fun(s,n));
}
用的递归,这样省去很多麻烦
用C语言编写可以进行加减乘除整数运算混合运算的计算器,要求写思路,越详细越好,初学者,不要很复杂的。
#include
#include
usingnamespacestd;
intmain()
{
inta,b;//a是输出结果,b是临时输入数据
charx;//x是标点符号输入
cin>>a;//先输入第一个数
while(1)//由于不知道运算式一共多长,所以用一个死循环不断读取
{
cin>>x;//输入运算符
if(x=='=')//'='特殊处理,输出结果
{
break;//退出循环,跳到return0;
}
else//如果是运算符就输入下一个数
{
cin>>b;
switch(x)//判断符号类型,并进行相应计算
{
case'+':a+=b;break;//每个case后面必须加break;否则将后面所有运算式全走一遍
case'-':a-=b;break;
case'*':a*=b;break;
case'/':a/=b;break;
}
}
}
return0;
}
汗,又改变条件了,这次你的要求和原来要求可是截然不同的程序啊,涉及到很多算法的,二叉树,堆栈等,我如果重写了初学者不一定能看懂了。我下面就给你贴一下差不多的代码吧。只是这个不需要输入等号,回车自动计算。如果需要去掉那些繁琐的代码估计没人为了这几个虚拟分给你去掉的。
#include
#include
#include
#include"Tree.h"
#include
boolisok(stringexp)//此函数验证式子是否正确,即是否符合运算规则。
{
charcheck;
interror=0;
intlb=0;
intrb=0;
if(exp.size()==1&&exp[0]!='-')returnfalse;
elseif((IsOperator(exp[0])&&exp[0]!='-'||IsOperator(exp[exp.size()-1]))&&exp[0]!='('&&exp[exp.size()-1]!=')')//此处若不加,在遇到某些式子时,会出现非法操作。
returnfalse;
for(intm=0;m
{
check=exp[m];
if(m==0&&check=='-'&&(isdigit(exp[1])!=0||exp[1]=='('))check=exp[++m];
if(IsOperand(check));//如果是数字,跳过,不管。
elseif(IsOperator(check))
{
if(check==')')
{
rb++;
if(IsOperator(exp[m+1])&&(exp[m+1]=='+'||exp[m+1]=='-'||exp[m+1]=='*'||exp[m+1]=='/'||exp[m+1]=='^'||exp[m+1]==')'))
{
m++;
if(exp[m]==')')
rb++;
}
elseif(IsOperator(exp[m+1]))
error++;
}
elseif(check=='(')
{
lb++;
if(exp[m+1]=='(')
{
m++;
lb++;
}
elseif(IsOperator(exp[m+1])&&exp[m+1]!='-')
error++;
}
else
{
if(IsOperator(exp[m+1])&&exp[m+1]=='(')
{
m++;
lb++;
}
elseif(IsOperator(exp[m+1]))
error++;
}
}
else
error++;
}
if(error==0&&lb==rb)
return(true);
else
return(false);
}
intmain()
{
HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTitle("四则运算器二叉树版");
SetConsoleTextAttribute(hOut,BACKGROUND_GREEN+FOREGROUND_BLUE);
binary_treeetree;
stack
stack
stringinfix;
charchoice='y';
system("cls");
cout<<"*******************************************************************"<
cout<<"**"<
cout<<"*十进制四则运算计算器 ※※※※※※※※※※※※*"<
cout<<"* ※※*"<
cout<<"*(二叉树版) ※※※※※※※※※※※※*"<
cout<<"**"<
cout<<"*******************************************************************"<
charc;
while(choice=='y'||choice=='Y')
{
cout<<"\n请输入表达式,不要带空格:\n";
cin>>infix;
cout<<"--------------------------------------------------------------------------------"<<'\n';
cout<<"表达式为:"<
if(isok(infix))
{
for(inti=0;i
{
c=infix[i];
if(i==0&&c=='-')//若开始为负,则把零压入运算数栈,把'-'压入运算符栈
{
binary_treetemp;
temp.root=build_node("0");
NodeStack.push(temp);
OpStack.push('-');
}
else
if(IsOperand(c))
{
stringtempstring;
tempstring=tempstring+c;
while(i+1
{
tempstring+=infix[++i];
}
binary_treetemp;
temp.root=build_node(tempstring);
NodeStack.push(temp);
}
elseif(c=='+'||c=='-'||c=='*'||c=='/'||c=='^')
{
if(OpStack.empty())
OpStack.push(c);
elseif(OpStack.top()=='(')
OpStack.push(c);
elseif(TakesPrecedence(c,OpStack.top()))
OpStack.push(c);
else
{
while(!OpStack.empty()&&(TakesPrecedence(OpStack.top(),c)||addition(OpStack.top(),c)))
{
binary_treetemp_tree;
stringthisstring="";
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);
}
}
elseif(c=='(')//若中间遇到括号,则判断下一位是否为'-'
{OpStack.push(c);
if(infix[i+1]=='-')
{
binary_treetemp;
temp.root=build_node("0");
NodeStack.push(temp);
OpStack.push('-');
++i;
}
}
elseif(c==')')
{
while(OpStack.top()!='(')
{
binary_treetemp_tree;
stringthisstring="";
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_treetemp_tree;
stringthisstring="";
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<<"结点个数为:"<
cout<<"以下是,中间的计算结果:"<<'\n';
etree.evaluate();
cout<<'\n';
cout<<"结果是:";
cout<
cout<<'\n'<<"--------------------------------------------------------------------------------"<<'\n';
cout<<"\n\n是否要重新运行?输入
cin>>choice;
}
else
{
cout<<"************************************************"<<'\n';
cout<<"错误:输入的表达试有误!"<<'\n';
cout<<"************************************************"<<'\n';
cout<<"\n\n是否要重新运行?输入
cin>>choice;
}
}
return0;
}
课程设计报告
设计题目:十进制四则运算计算器
实习目的
通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
二.问题描述
在以二叉树表示算术表达式的基础上,设计一个十进制的四则运算的计算器。[设计要求]实现整数浮点数的四则运算。
三.需求分析
该程序实现的是实数型的四则运算,并在此运算上又加入了幂”^”运算,该程序用一二叉树表示整个输入的算术表达式:
(1)实现对结点的打印,便于结果分析;
(2)实现对结点的统计;
(3)实现中间结果的显示,可以看打印的结点,验证运算结果的正确与否。
四.概要设计
系统用到的抽象数据类型定义:
1.ADTnode_type{
数据对象V:一个集合,该集合中的所有元素具有相同的特性
数据关系R:R={VR}
VR={
基本操作:
(1) node_type(stringk);
操作结果:对结点进行初始化
}ADTnode_type
2.ADTbinary_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();
操作结果:计算一棵二叉树中的结点个数
}ADTbinary_tree
系统中子程序及功能要求:
1. ADTnode_typebuild_node(stringx):建立一个结点
2. addition(charOperatorA,charOperatorB):判断两操作符是否相等,若相等返回True
3. TakesPrecedence(charOperatorA,charOperatorB):判别符号的优先级。A>B,返回为TRUE
4. copy(ADTnode_type*&r1,ADTnode_type*r2):拷贝整个二叉树
5. isok(stringexp):验证表达式是否输入正确,若正确返回TRUE
五.测试分析(运行结果)
第一个表达式:10-(-3)*(((21+3/5)*8/3)*(-2))
第二个表达式:-(32.7-3210.3)/((8.0+0.9)*8.9)+4.4
依次把运算符和操作数放入堆栈中,过程中依次把中间运算结果打印出来
用c语言编一个计算器程序,能够实现基本的加减乘除,能够输出运算对象,运算符,运算结果。谢谢啦!
#include
intmain(void)
{
doublea,b;
intchose;
printf("欢迎使用我的计算器\n");
while(1)
{
printf("********************\n");
printf("1、两数相加\n");
printf("2、两数相减\n");
printf("3、两数相乘\n");
printf("4、两数相除\n");
printf("5、退出\n");
printf("********************\n");
scanf("%d",&chose);
/* if(chose<1||chose>5)
{
printf("你的输入有误,请重新输入!\n");
continue;
}*/
switch(chose)
{
case1:
printf("请输入第一个数字:\n");
scanf("%lf",&a);
printf("请输入第二个数字:\n");
scanf("%lf",&b);
printf("%lf+%lf=%lf\n",a,b,a+b);
break;
case2:
printf("请输入第一个数字:\n");
scanf("%lf",&a);
printf("请输入第二个数字:\n");
scanf("%lf",&b);
printf("%lf-%lf=%lf\n",a,b,a-b);
break;
case3:
printf("请输入第一个数字:\n");
scanf("%lf",&a);
printf("请输入第二个数字:\n");
scanf("%lf",&b);
printf("%lf*%lf=%lf\n",a,b,a*b);
break;
case4:
printf("请输入第一个数字:\n");
scanf("%lf",&a);
printf("请输入第二个数字:\n");
scanf("%lf",&b);
printf("%lf/%lf=%lf\n",a,b,a/b);
break;
case5:
printf("再见!\n");
return;
default:
printf("你的输入有误,请重新输入!\n");
continue;
}
}
}
用C语言怎样实现计算器加减乘除功能?
我有个VC++的 任意进制转换----栈的链接存储 /* 栈的链接存储----任意进制转换*/ #include #include typedef int ElemType; struct SNode { ElemType data; SNode* next; }; void InitStack(SNode*& HS) { HS = NULL; } // 压栈 插入元素 void Push(SNode*& HS, const ElemType& item) { SNode* newptr = new SNode; /* 获取动态结点*/ newptr->data = item; /*给新分配的相关文章
- 详细阅读
-
这个公式用卡西欧计算器怎么按详细阅读
CASIO计算器的使用方法是什么?1、首先拿出CASIO计算器,先按on打开计算器。2、这里随便计算一个除法,显示的是分数。3、还需要按一下ds才能,变成小数。4、然后开始修改设置,先按sh
-
伪装成计算器隐藏应用?详细阅读
伪装成计算器隐藏应用软件?1.伪装成计算器的隐藏软件叫“好运吧”还可以伪装成其他APP,可以伪装成背单词,学习乐啊,新闻这些,连消息通知伪装,需要输入设置得正确内容才可以看到真
-
华为光猫su密码计算器详细阅读
华为光猫su密码计算器 怎么用su密码计算器是用于华为光猫telnet时解密用的。 R013和之前的版本光猫都是需要解密的,而新版的R015和R016版本是不需要解密的。 所以su解密器只
-
零基础的小白学那个编程语言,最容易详细阅读
零基础入门学习什么编程语言比较好如果你想学习编程,虽然选择第一门编程语言与你想用它来做什么最终达到什么目的有很大的关系,但是事实上某些编程语言的确比其他语言要好学。
-
信息技术会考操作题photon已经做完详细阅读
信息技术学业水平考试步骤错了会不会影响成绩?不会,这种考试一是看你的最终结果,最终结果相同应该就能获得分数,步骤错了也分步骤顺序错了和步骤的具体操作错了,顺序错了不会有影
-
linkboy 的“元素”里面的“cx编程详细阅读
欧姆龙的cx-one cx-p CXP730_SCHI 都是什么软件有什么用?cx-one当中包含了CX-Programmer(PLC编程)软件,还有CX-Simular(仿真),CX-Designer(HMI编程);LOGO语言有什么用以下内容来自