c++计算器源代码

 我来答
料事如神心雨随
2016-06-06 · TA获得超过1399个赞
知道小有建树答主
回答量:662
采纳率:0%
帮助的人:233万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<math.h>
int resultprocess(char mexp[],double * result);
int tokenprocess(char mexp[],double shuzhi[],char signs[]);
double resultadd(double shuzhi[],char signs[],int sp);
void main()
{
char mexp[100];
double result=0;
printf("Please input the maths expression:\n\nmexp=");
gets(mexp);
if(resultprocess(mexp,&result))
printf("\nThe result of the maths expression is:\n\nresult=%lf\n",result);
else
printf("\nThe maths expression is wrong,can't be processed!");
getch();
}
int resultprocess(char mexp[],double * result)
{
char signs[100];
double shuzhi[100];
int sp;
sp=tokenprocess(mexp,shuzhi,signs);
if(sp>0)
{
*result=resultadd(shuzhi,signs,sp);
return 1;
}
else
return 0;
}
int tokenprocess(char mexp[],double shuzhi[],char signs[])
{
char strtemp[100],chartemp;
int shuzhiflag=0,spaceflag=0,dotflag=0,sp=0,i;
signs[0]='+';
for(i=0;mexp[i]!='\0';i++)
{
chartemp=mexp[i];
if(chartemp=='+'||chartemp=='-'||chartemp=='*'||chartemp=='/'||chartemp=='^')
{
if(shuzhiflag==0)
{
if(chartemp=='-'&&sp==0)
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
else
return 0;
}
else
{
shuzhi[sp]=atof(strtemp);
sp++;
shuzhiflag=0;
spaceflag=0;
dotflag=0;
signs[sp]=chartemp;
}
}
else
if(chartemp>='0'&&chartemp<='9')
{
if(spaceflag==2)
return 0;
else
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp=='.')
{
if(dotflag==1)
return 0;
else
if(dotflag==0&&shuzhiflag==0)
return 0;
else
{
dotflag=1;
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp==' ')
{
if(shuzhiflag>0)
spaceflag=2;
else
spaceflag=1;
}
else
return 0;
}
if(shuzhiflag>0)
{
shuzhi[sp]=atof(strtemp);
sp++;
return sp;
}
else
return 0;
}
double resultadd(double shuzhi[],char signs[],int sp)
{
int i;
double result=0;
for(i=1;i<sp;i++)
if(signs[i]=='^')
{
shuzhi[i]=pow(shuzhi[i-1],shuzhi[i]);
signs[i]='*';
shuzhi[i-1]=1;
}
for(i=1;i<sp;i++)
if(signs[i]=='*'||signs[i]=='/')
{
if(signs[i]=='*')
shuzhi[i]=shuzhi[i-1]*shuzhi[i];
else
shuzhi[i]=shuzhi[i-1]/shuzhi[i];
signs[i]=signs[i-1];
shuzhi[i-1]=0;
}
for(i=0;i<sp;i++)
{
if(signs[i]=='+')
result=result+shuzhi[i];
else
result=result-shuzhi[i];
}
return result;
}
匿名用户
2019-11-25
展开全部
#include<iostream>//简单的计算器
using namespace std;//DEV c++
int main()
{
int a,b;
char c;//这里变量名只能为char
cout<<"计算器"<<endl;
cout<<"你想使用哪种计算器(+,-,*,/)"<<endl;
cin>>c;
switch(c)//这里是对+,-,*,/进行使用(c)
{
case '+'://加法运算
{
cout<<"请输入第一个数"<<endl;
cin>>a;
cout<<"请输入第二个数"<<endl;
cin>>b;
cout<<a<<"+"<<b<<"="<<a+b;
}
break;//break是终止
case '-'://减法运算
{
cout<<"请输入第一个数"<<endl;
cin>>a;
cout<<"请输入第二个数"<<endl;
cin>>b;
cout<<a<<"-"<<b<<"="<<a-b;
}
break;
case '*'://乘法运算
{
cout<<"请输入第一个数"<<endl;
cin>>a;
cout<<"请输入第二个数"<<endl;
cin>>b;
cout<<a<<"*"<<b<<"="<<a*b;
}
break;
case '/'://除法运算
{
cout<<"请输入第一个数"<<endl;
cin>>a;
cout<<"请输入第二个数"<<endl;
cin>>b;
if(b!=0)
{
cout<<a<<"/"<<b<<"="<<a/b;
}
else cout<<"除数不能为0"<<endl;
}
break;
default:cout<<"请输入正确的运算符号"<<endl;//特殊情况
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式