资源简介
可以运行加、减、乘、除、乘方、开方、取模、小括号操作
代码片段和文件信息
#include“stdio.h“
#include“stdlib.h“
#include“string.h“
#include“math.h“
#define true 1
#define false 0
#define OPSETSIZE 10
typedef int Status;
unsigned char Prior[10][10] =
{ // 运算符优先级表
// ‘+‘ ‘-‘ ‘*‘ ‘/‘ ‘(‘ ‘)‘ ‘#‘ ‘^‘ ‘%‘
/*‘+‘*/‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘‘<‘ ‘<‘‘<‘
/*‘-‘*/‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘‘<‘ ‘<‘‘<‘
/*‘*‘*/‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘‘<‘ ‘>‘‘<‘
/*‘/‘*/‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘‘<‘ ‘>‘‘<‘
/*‘(‘*/‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘ ‘‘<‘ ‘<‘‘<‘
/*‘)‘*/‘>‘‘>‘‘>‘‘>‘‘ ‘‘>‘‘>‘‘>‘ ‘>‘‘>‘
/*‘#‘*/‘<‘‘<‘‘<‘‘<‘‘<‘‘ ‘‘=‘‘<‘ ‘<‘‘<‘
/*‘^‘*/‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘‘>‘ ‘>‘‘>‘
/*‘%‘*/‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘‘< ‘‘> ‘‘<‘
/*‘&‘*/‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘‘> ‘‘> ‘‘>‘
};
typedef struct StackChar
{
char c;
struct StackChar *next;
}SC; //StackChar类型的结点SC
typedef struct StackFloat
{
float f;
struct StackFloat *next;
}SF; //StackFloat类型的结点SF
SC *Push(SC *schar c) //SC类型的指针Push,返回p
{
SC *p=(SC*)malloc(sizeof(SC));
p->c=c;
p->next=s;
return p;
}
SF *Push(SF *sfloat f) //SF类型的指针Push,返回p
{
SF *p=(SF*)malloc(sizeof(SF));
p->f=f;
p->next=s;
return p;
}
SC *Pop(SC *s) //SC类型的指针Pop
{
SC *q=s;
s=s->next;
free(q);
return s;
}
SF *Pop(SF *s) //SF类型的指针Pop
{
SF *q=s;
s=s->next;
free(q);
return s;
}
float Operate(float aunsigned char theta float b) //计算函数Operate
{
switch(theta)
{
case ‘+‘: return a+b;
case ‘-‘: return a-b;
case ‘*‘: return a*b;
case ‘/‘: return a/b;
case ‘^‘: return pow(ab);
case ‘%‘: return fmod(ab);
//case ‘&‘: return sqrt(a); //开方
default : return 0;
}
}
char OPSET[OPSETSIZE]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘‘^‘‘%‘‘&‘};
Status In(char Testchar *TestOp)
{
int Find=false;
for (int i=0; i< OPSETSIZE; i++)
{
if(Test == TestOp[i])
Find= true;
}
return Find;
}
Status ReturnOpOrd(char opchar *TestOp)
{
for(int i=0; i< OPSETSIZE; i++)
{
if (op == TestOp[i])
return i;
}
}
char precede(char Aop char Bop)
{
return Prior[ReturnOpOrd(AopOPSET)][ReturnOpOrd(BopOPSET)];
}
float Evaluateexpression(char* Myexpression)
{
// 算术表达式求值的算符优先算法
// 设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符集合
SC *OPTR=NULL; // 运算符栈,字符元素
SF *OPND=NULL; // 运算数栈,实数元素
char TempData[20];
float Dataab;
char theta*cDr[]={‘#‘‘\0‘};
OPTR=Push(OPTR‘#‘);
c=strcat(MyexpressionDr);
strcpy(TempData“\0“);//字符串拷贝函数
while (*c!= ‘#‘ || OPTR->c!=‘#‘)
{
if (!In(*c OPSET))
{
Dr[0]=*c;
strcat(TempDataDr); //字符串连接函数
c++;
if (In(*c OPSET))
{
Data=atof(TempData); //字符串转换函数(double)
OPND=Push(OPND Data);
strcpy(TempData“\0“);
}
}
else // 不是运算符则进栈
{
switch (precede(OPTR->c *c))
{
case ‘<‘: // 栈顶元素优先级低
OPTR=Push(OPTR *c);
c++;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2445312 2017-12-06 11:24 简单计算器\1.sdf
文件 2560 2017-11-22 15:51 简单计算器\1.suo
文件 3221 2017-11-10 08:22 简单计算器\1.vcxproj
文件 946 2017-11-10 08:22 简单计算器\1.vcxproj.filters
文件 143 2017-11-10 08:19 简单计算器\1.vcxproj.user
文件 30720 2017-11-16 16:57 简单计算器\Debug\1.exe
文件 381 2017-11-16 16:57 简单计算器\Debug\1.exe.intermediate.manifest
文件 336896 2017-11-16 16:57 简单计算器\Debug\1.ilk
文件 56 2017-11-22 15:21 简单计算器\Debug\1.lastbuildstate
文件 752 2017-11-22 15:21 简单计算器\Debug\1.log
文件 379904 2017-11-16 16:57 简单计算器\Debug\1.pdb
文件 713 2017-11-15 17:36 简单计算器\Debug\1.vcxprojResolveAssemblyReference.cache
文件 0 2017-11-15 17:36 简单计算器\Debug\1.write.1.tlog
文件 1094 2017-11-16 16:57 简单计算器\Debug\cl.command.1.tlog
文件 13672 2017-11-16 16:57 简单计算器\Debug\CL.read.1.tlog
文件 618 2017-11-16 16:57 简单计算器\Debug\CL.write.1.tlog
文件 21793 2017-11-16 16:57 简单计算器\Debug\homework.obj
文件 2262 2017-11-16 16:57 简单计算器\Debug\li
文件 5022 2017-11-16 16:57 简单计算器\Debug\li
文件 1050 2017-11-16 16:57 简单计算器\Debug\li
文件 794 2017-11-16 16:57 简单计算器\Debug\mt.command.1.tlog
文件 1990 2017-11-16 16:57 简单计算器\Debug\mt.read.1.tlog
文件 466 2017-11-16 16:57 简单计算器\Debug\mt.write.1.tlog
文件 355328 2017-11-16 16:57 简单计算器\Debug\vc100.idb
文件 331776 2017-11-16 16:57 简单计算器\Debug\vc100.pdb
文件 4211 2017-11-16 16:57 简单计算器\homework.cpp
文件 2555904 2017-11-22 15:15 简单计算器\ipch\1-84d294df\1-14f67bdd.ipch
目录 0 2017-11-22 15:15 简单计算器\ipch\1-84d294df
目录 0 2017-11-22 15:21 简单计算器\Debug
目录 0 2017-11-22 15:15 简单计算器\ipch
............此处省略4个文件信息
相关资源
- 任务书2一元稀疏多项式计算器数据结
- 基于MFC的计算器(功能非常齐全:进
- 大数计算器的c语言实现
- 用C语言设计并实现一个一元稀疏多项
- C语言计算器带括号、小数计算
- 基于proteus的计算器
- C++课程设计报告-科学计算器加强版
- 基于单片机的智能计算器
- C++编写一个计算器,实现加减乘除,
- 简易计算器基于对话框VC6.0
- 课程设计报告+源码--计算器(C++)
- 基于VC的MFC计算器
- 整数小数四则运算计算器(C语言版用
- c语言课程设计之计算器
- C++builder实现计算器
- 分数计算器C++
- c++计算器 类与对象的练习
- 51单片机做简易计算器
- at89c51单片机+矩阵键盘编写的计算器
- 桌面计算器
- 课程设计--计算器基于MFC
- 基于QT的三元一次方程计算器
- 纯C语言写计算器界面源码
- 密码学MFC实现仿射加密解密超级计算
- C语言一个简易计算器程序
- 基于51单片机的智能计算器(实现两个
- STC15F单片机制作的:计算器、万年历
- 用8051与1601LCD设计的计算器
- 基于51单片机的计算器
- 菜单实现加单计算器(个人原创c++源
评论
共有 条评论