求用c++编写简单的计算器.

大家帮帮忙,帮我用vc++6.0(用Win32 Console Application中c++ Source File)编写一个简单的计算器,界面不做要求,要求能计算简单的+-*/ 且每一次计算能用一次或多次+-*/. 最好是大学里面能用的上的,再加上注释就更好了,我有急用.
问题补充:要Win32 Console Application中c++ Source File能运行的哦,在Win32 Console Application中建一个an empty project(空的工程),files选择c++ Source File且填写文件的扩展名为.c的形式的情况下.谢了!
上一次不小心把没回答完的回答设为最佳答案,我重开一下,谢谢支持!
a570056568能不能帮忙修改一下小瑕疵:程序好象不能计算1+1+1之类的,小数也不能计算.

给你一个可用的,VC6调试通过。老实说,这个比windows自带的计算器做起来麻烦。
#include <stdio.h>
#include <stdlib.h>
char token;
void match( char expectedToken );
int low( void );
int mid( void );
int high( void );
int main()
{
int result; /*运算的结果*/
printf("*****************************************\n");
printf("**Welcome to use this simple calculator**\n");
printf("**Please input a multinomial like **\n");
printf("** 6-3*(5-1)/2+14/7 **\n");
printf("*****************************************\n");
token = getchar(); /*载入第一个符号*/

result = low(); /*进行计算*/
if( token == '\n' ) /* 是否一行结束 */
printf( "The answer is : %d\n", result );
else
{
printf( "Unexpected char!");
exit(1); /* 出现了例外的字符 */
}
scanf("%d",result);
return 0;
}
/*定义程序要使用到的一些函数*/
void match( char expectedToken ) /*对当前的标志进行匹配*/
{
if( token == expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/
else
{
printf("cannot match\n");
exit(1); /*匹配不成功,退出程序*/
}
}

int low( void )/*用于计算表达式中级别最低的运算*/
{
int result = mid(); /*计算比加减运算优先级别高的部分*/
while(( token == '+' ) || ( token == '-' ))
if ( token == '+')
{
match('+'); /*进行加法运算*/
result += mid();
break;
}
else if ( token == '-')
{
match('-'); /*进行减法运算*/
result -= mid();
break;
}
return result;
}

int mid( void )/*用于计算表达式中级别较高的运算*/
{
int div; /*除数*/
int result = high(); /*计算比乘除运算优先级别高的部分*/
while(( token == '*' ) || ( token == '/' ))
if ( token == '*')
{
match('*'); /*进行乘法运算*/
result *= high();
break;
}
else if (token == '/')
{
match('/'); /*进行除法运算*/
div = high();
if( div == 0 ) /*需要判断除数是否为0*/
{
printf( "除数为0.\n" );
exit(1);
}
result /= div;
break;
}
return result;
}

int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/
{
int result;
if( token == '(' ) /*带有括号的运算*/
{
match( '(' );
result = low();/*递归计算表达式*/
match(')');
}
else if ( token>= '0'&&token<='9' ) /*实际的数字*/
{
ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/
scanf( "%d", &result ); /*读出数字*/
token = getchar(); /*读出当前的标志*/
}
else
{
printf("The input has unexpected char\n"); /*不是括号也不是数字*/
exit(1);
}
return result;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-10
唉,又是计算器 。 - -|||||||||||

还是以前的回答:

===============================

没有比这个更简单的代码了:

// concalc.cpp
// Tan kaiShuai @ Antiy Labs.

// v1.0.0 1010/09/07 Antiy Labs.

#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(int argc, char * argv[])
{
TCHAR szDataBuff[1024] = _T("set /a va = ");
LPTSTR pDataBuff = szDataBuff+_tcslen(szDataBuff);
_tprintf(_T("concalc.exe v1.0.0"));
_tprintf(_T("\n>> "));
_getts(pDataBuff);
while(_tcsicmp(pDataBuff,_T("quit")))
{
system(szDataBuff);
_tprintf(_T("\n>> "));
_getts(pDataBuff);
}
return EXIT_SUCCESS;
}

运行:
concalc.exe v1.0.0
>> 1+2*3/(4-2)
4
>>
第2个回答  2010-09-10
这是一个我数据结构课程时的一个实验!写得比较复杂!第一部分是顺序栈的类模板!第二部分是主函数。

//第一部分
const int StackSize = 50;

template <class T>
class SeqStack
{
public:
SeqStack(){m_top = -1;}
~SeqStack(){}
bool Empty(){return ((m_top == -1)? true : false);}

void Push(T x);
T Pop();
T GetTop();
int GetLength();
void PrintStack();

private:
int m_top;
T m_data[StackSize];
};

template <class T>
void SeqStack<T>::Push(T x)
{
if(m_top < StackSize - 1)
m_data[++m_top] = x;
else
throw "上溢";
}

template <class T>
T SeqStack<T>::Pop()
{
if(m_top == -1) throw "下溢";
return m_data[m_top--];
}

template <class T>
T SeqStack<T>::GetTop()
{
if(m_top == -1) throw "空栈";
return m_data[m_top];
}

template <class T>
int SeqStack<T>::GetLength()
{
return m_top + 1;
}

template <class T>
void SeqStack<T>::PrintStack()
{
for(int i = m_top; i > -1; i--)
cout<< m_data[i] << " ";
cout<<endl;
}

//第二部分
#include <iostream>
using namespace std;

int Calculate(char a[]);
int Level(char a);

void main()
{
char a = '1';
while(a != '0')
{
char str[50];
cout<< "请输入合法运算式:"; cin>> str;
cout<< "结果为:" << Calculate(str) <<endl;
cout<<endl;
cout<< "退出请按0:";cin>>a;
cout<< "----------------------" <<endl;
}
}

int Level(char a)
{
int n = -1;
if (a == '+' || a == '-')
n = 1;
else if(a == '*' || a == '/')
n = 2;
else if(a == '\0')
n = 0;
return n;
}

int Calculate(char a[])
{
SeqStack<char> Optr;
SeqStack<int> Spnd;
for(int i = 0; a[i] != '\0'; i++)
{
if(Level(a[i]) == -1)
Spnd.Push(int(a[i]) - 48);
else
{
if(Level(a[i]) == 1)
Optr.Push(a[i]);
else
{
int x = Spnd.Pop();
int y = a[i+1] - 48;
int r = (a[i] == '*' ? (x * y) : (x / y));
Spnd.Push(r);
i++;
}
}
}
while(Spnd.GetLength() > 1)
{
int x = Spnd.Pop();
int y = Spnd.Pop();
int r;
if(Spnd.GetLength() > 0)
{
char op = Optr.Pop();
if(Optr.GetTop() == '-')
{
Optr.Pop();
Optr.Push('+');
y = -y;
}
r = (op == '+' ? (y + x) : (y - x));
}
else if(Spnd.GetLength() == 0)
{
char op = Optr.Pop();
if(!Optr.Empty())
{
if(Optr.GetTop() == '-')
y = -y;
}
r = (op == '+' ? (y + x) : (y - x));
}
else
r = (Optr.Pop() == '+' ? (y + x) : (y - x));
Spnd.Push(r);
}
return Spnd.Pop();
}
第3个回答  2010-09-10
你是要字符界面的程序?本回答被提问者采纳

用c语言设计一个简单的加减乘除计算器
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。2、输入预处理命令和主函数:#include \/*函数头:输入输出头文件*\/,void main()\/*空类型:主函数*\/。3、定义变量:int a,b,d; \/*定义变量的数据类型为整型*\/,char c;\/*定义变量的数据类型为字符型*\/。4、输入四则运算式:pri...

用C++编写一个计算器程序。用户输入两个运算数和四则运算符,输出计算结 ...
用C++编写的”输入两个运算数和四则运算符,输出计算结果”计算器程序代码具体如下:include<stdio.h> void main(){int a,b,d;char c;printf("请输入一种运算符:\\n");scanf("%c",&c);printf("请输入两个数:\\n");scanf("%d",&a);scanf("%d",&b);switch(c){ case '+':d=a+...

利用C语言完成迷你计算器程序编写
float cal(float a,char c,float b){float m;switch(c){case'*':m=a*b;break;case'\/':m=a\/b;break;}return m;}void main(){ float x[10000]={0};float fsum=0;char y[10000]={0};int i=0,j,k,l,r; do{i++;scanf("%f%c",&x[i],&y[i]);}while(y[i]!=...

用c语言 (c++) 编写计算器程序
01 首先我们需要在Dev C++软件中创建一个C语言项目,项目类型选择控制台程序,如下图所示 02 接下来我们在项目下面

用C++编写一下计算器程序
简单的计算器:#include <iostream>using namespace std;int main(){double x,y;char z;cout<<"请输入第一个数字:"<<endl;cin>>x;cout<<"请输入第二个数字:"<<endl;cin>>y;cout<<"请输入输入运算符号(+、-、*、\/):"<<endl;cin>>z;cout.precision(7);switch(z){case '+':cout<<"结果:"<...

c++使用宏的计算器?
a+b#define MINUS(a,b) a-b#define MULTI(a,b) a*b#define DIVIDE(a,b) a\/bint main(){float a,b;scanf("%f %f",&a,&b);printf("%f\\n",PLUS(a,b));printf("%f\\n",MINUS(a,b));printf("%f\\n",MULTI(a,b));printf("%f\\n",DIVIDE(a,b));return 0;} 截图:

急:mfc编程,用C++写一个简易的计算器,有图形界面的..请求各位大虾给出详...
1.新建一个对话框程序。2.添加计算器的各个按键及编辑框(用来显示输入和结果)3.为对话框添加一些变量:一个状态标志(计算加减乘除),一个标志(对运算两个数的哪个进行处理),两个double变量(用于运算的两个数),用类向导为编辑框绑定一个变量。定义一个计算函数(进行加减乘除)4.在对话框.h头文件中...

c++计算器源代码
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 ...

用c++做一个四则运算计算器(支持加减乘除混合运算,支持括号,倒数,正负...
op1); } if (inPriority(op1)>inPriority(op.top())) { \/\/判断优先级并计算 num1 = dealNum(num1, num2, op1); num2 = num.top(); num.pop(); op1 = op.top(); op.pop(); } else { num2 = dealNum(num2, num.top(), op.top()); num...

用C++写出以下程序一元多项式简单的计算器
void main(){ float a,b,c,s,x1,x2;double t;cout<<"请输入三个数字:a,b,c"<<endl;cin>>a>>b>>c;cout<<"方程"<<a<<"x*x"<<"+"<<c<<"x"<<"+"<<c<<"=0"<<"根如下:"<<endl;if(a==0.0)if(b!=0.0)cout<<"方程的根为:"<<-c\/b<<endl;else if (c==...

相似回答