• 大小: 936KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签: 计算器  

资源简介

可以运行加、减、乘、除、乘方、开方、取模、小括号操作

资源截图

代码片段和文件信息

#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\link.command.1.tlog

     文件       5022  2017-11-16 16:57  简单计算器\Debug\link.read.1.tlog

     文件       1050  2017-11-16 16:57  简单计算器\Debug\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论