分给我吧,我发你邮箱。我的邮箱为546261804/ *** .com,收到付我分。我还有其它两个经典版本,都是国外的。
意外的是你的邮箱已被停用了,就是不能用了,不能收了。
有事找我 *** 546261804
//***************************************************************************
#includestring.h
#includectype.h
#includemalloc.h // malloc()等
#includelimits.h // INT_MAX等
#includestdio.h // EOF(=^Z或F6),NULL
#includestdlib.h // atoi()
#includeio.h // eof()
#includemath.h // floor(),ceil(),abs()
#includeprocess.h // exit()
#includeiostream.h // cout,cin
// 函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
// #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
//***************************************************************************
//栈的储存结构
typedef struct{
//运算符栈
char *base;
char *top;
int stacksize;
}SqStack1;
typedef struct{
//运算数栈
float *base;
float *top;
int stacksize;
}SqStack2;
//***************************************************************************
//以下是运算符栈的基本操作函数
Status InitStack(SqStack1 S){
//初始化一个栈
S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack
Status DestroyStack(SqStack1 S){
//销毁栈S
free(S.top);
free(S.base);
return OK;
}//DestroyStack
char GetTop(SqStack1 S){
//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
return *(S.top-1);
}//Gettop
Status Push(SqStack1 S,char e){
//插入元素e为新的栈顶元素
if(S.top-S.base=S.stacksize){
//栈满,追加储存空间
S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push
Status Pop(SqStack1 S,char e){
//若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
e=*(--S.top);
return OK;
}//Pop
//***************************************************************************
//以下是运算数栈的基本操作函数
Status InitStack(SqStack2 S){
//初始化一个栈
S.base=(float *)malloc(STACK_INIT_SIZE*sizeof(float));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack
Status DestroyStack(SqStack2 S){
//销毁栈S
free(S.top);
free(S.base);
return OK;
}//DestroyStack
float GetTop(SqStack2 S){
//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
return *(S.top-1);
}//Gettop
Status Push(SqStack2 S,float e){
//插入元素e为新的栈顶元素
if(S.top-S.base=S.stacksize){
//栈满,追加储存空间
S.base=(float *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(float));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push
Status Pop(SqStack2 S,float e){
//若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
e=*(--S.top);
return OK;
}//Pop
//***************************************************************************
//以下是相关的运算符判断函数
char Precede(char A,char B){
//比较运算符A, B的优先关系,A,B的范围仅限于'+','-','*','/','^','(',')','='
//返回'','','='
switch(A){
case '+':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':return '';
case '=':return '';
default:printf("表达式错误!\n");exit(0);
}
case '-':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':return '';
case '=':return '';
default:printf("表达式错误!\n");exit(0);
}
case '*':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':return '';
case '=':return '';
default:printf("表达式错误!\n");exit(0);
}
case '/':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':return '';
case '=':return '';
default:printf("表达式错误!\n");exit(0);
}
case '^':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':return '';
case '=':return '';
default:printf("表达式错误!\n");exit(0);
}
case '(':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':return '=';
case '=':printf("表达式错误!\n");exit(0);
default:printf("表达式错误!\n");exit(0);
}
case ')':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':printf("表达式错误!\n");exit(0);
case ')':return '';
case '=':return '';
default:printf("表达式错误!\n");exit(0);
}
case '=':switch(B){
case '+':return '';
case '-':return '';
case '*':return '';
case '/':return '';
case '^':return '';
case '(':return '';
case ')':printf("表达式错误!\n");exit(0);
case '=':return '=';
default:printf("表达式错误!\n");exit(0);
}
default:printf("表达式错误!\n");exit(0);
}
}//Precede
Status InOP(char c){
//判断c是否是运算符,是则返回TRUE,否则返回FALSE
switch(c){
case '+':return TRUE;
case '-':return TRUE;
case '*':return TRUE;
case '/':return TRUE;
case '^':return TRUE;
case '(':return TRUE;
case ')':return TRUE;
case '=':return TRUE;
default:return FALSE;
}
}//InOP
//***************************************************************************
float Operate(float a,char theta,float b){
switch(theta){
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':
if(b==0){
printf("分母不能为0!\n");
exit(0);
}
else return a/b;
case '^':
if(a==0b=0){
printf("0的指数必须大于0!\n");
exit(0);
}
else return (float)pow(a,b);
default:printf("表达式错误!\n");exit(0);
}
}//Operate
Status EvaluateExpression(){
//算术表达式求值
char c,x,theta,prec;
//c是每次读取的字符,x是存放脱括号后的多余的括号,theta是运算符,prec是c的前一个字符
float a,b,result;//a、b是每次从运算数栈中取出的要进行运算的数,result存放最终结果
float cc,flag,ii,minus=1;
//cc存放由字符串转化而来的浮点数,flag用于标记是否已读取过小数点,
//ii存放小数部分需要缩小的倍数,minus用于记录该数前是否有负号
SqStack1 OPTR;
SqStack2 OPND;
InitStack(OPTR);InitStack(OPND);
Push(OPTR,'=');
prec='=';scanf("%c",c);
while(c!='='||GetTop(OPTR)!='='){
cc=0;flag=0;ii=10;
if(c=='-'(prec=='='||prec=='(')){minus=-1;prec=c;scanf("%c",c);}
//若某“-”前面是“=”(之一个符号就是“-”)或“(”,则此为负号,不是减号
else if(!InOP(c)){
while(!InOP(c)){
if(c=48c=57){
if(flag==0)cc=cc*10+c-48;//小数点之前
else if(flag==1){cc=cc+(c-48)/ii;ii*=10;}//小数点之后
else {printf("小数点错误!\n");exit(0);}//小数点有错
}
else if(c=='.')flag++;//读到小数点
else {printf("表达式错误!\n");exit(0);}
prec=c;scanf("%c",c);
}
cc*=minus;minus=1;
Push(OPND,cc);
}//不是运算符则进OPND栈
else
switch(Precede(GetTop(OPTR),c)){
case '':Push(OPTR,c);prec=c;scanf("%c",c);break;//栈顶元素优先级低
case '=':Pop(OPTR,x);prec=c;scanf("%c",c);break;//脱括号并接收下一字符
case ''://退栈并将运算结果入栈
Pop(OPTR,theta);
Pop(OPND,b);Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
}
}
result=GetTop(OPND);
printf("%f\n",result);
//DestroyStack(OPTR);
//DestroyStack(OPND);
return OK;
}//EvaluateExpression
void main(){
printf(" **********************\n");
printf(" * 欢迎使用计算器! *\n");
printf(" **********************\n");
printf("请输入表达式,以“=”结束:\n");
printf("(支持实数间的加(+)、减(-)、乘(*)、除(/)、乘方(^)、单目减(-)运算)\n");
EvaluateExpression();
exit (0);
}
E调 《卡农》(括号是一起按)
HQ)---(EN)---(OF)----(NC)----(MD)----(LA)----(MD)----(NE)
(HQ)LQO-(EN)JLN-(OF)MOQ-(NC)JLN-(MD)HKM-(LA)JLO-(MD)HKM-(NE)ILN
(HQ)EHE-(EN)ILI-(OF)JOM-(SC)LTN-(RD)KOH-(HQ)PON-(MD)HKM-(NE)ILN
(OH)NOJ-(LE)INE-(OF)JOM-(SC)QST-(RD)QPR-(HQ)PON-(MD)HKM-(OE)PON
(OH)NOJ-(LE)INE-(OF)JOM-(SC)QST-(RD)QPR-(HQ)PON-(MD)HKM-(OE)HO NO P
(HQ)L QPOP-E LQRQP-(OF)JOMJNO-(CN)LJL-
(MD)HNO-(HL)JOJ-(MD)H KMOP-(EO)INOP-
(HQ)L QPOP-E LQRQP-(OF)J OMJNO-(CN)LJL-
(MD)H OR-(HQ)POL-(MD)H KMOP-(EN)INOP
(HS)QRSQR-S LMNOPQR-(FQ)OPQJK-LMLKLONO
(DM)ONMLK-LKJKLMNO-(DM)ONONO-NMNOPQRS
(HS)QRSQR-S LMNOPQR-(FQ)OPQJK-LMLKLONO
(DM)ONMLK-LKJKLMNO-(DM)ONONO-NMNOPQRS
(HQ)OPQPO-PNOPQPON-(FO)MNOJK-LMLKLONO
(DM)ONMLK-LKJKLMNO-(DM)ONONM-NOPONOMN
HLOQ-EILN-FJMO-CLNQ-DHKM-HJLO-DKMO-EILN
HLOQ-EILN-FJMO-CLNQ-DHKM-HJLO-DKMO-EILN
成都医学院地址 1、新都校区:四川省成都市新都区新都大道783号 6105002、天回校区:四川省成都市金牛区蓉都大道天回路601号 610083 学校简介:成都医学院(Chengdu Medic...
大数据时代:如何守护我们的数据安全 1、加强对数据的权限控制大数据通常是由多个数据源组成,之间相互关联并形成大量的分析和应用结果。因此,对大数据进行有效的权限控制是保护数据安全的关键。2、数据加密:对...
操纵大选又引发卡塔尔断交潮的"俄罗斯黑客"有多牛? 卡塔尔断交潮发生后,美国调查人员认为,俄罗斯黑客入侵了卡塔尔国家新闻机构,并植入一则假新闻,挑起了卡塔尔外交危机。美方安全机构公布调查结果称,所搜集...
检索步骤 信息检索的基本步骤是主题分析、检索系统的选择、检索词的提取、检索风格的构建、文献检索、检索风格的调整和检索结果的处理。信息检索是用户查询和获取信息的主要方式,是用户查找信息的方法和手段。信息...
电子邮件的格式怎么写? 1、电子邮箱格式:电子邮箱具有单独的网络域名,其书写格式也有一定的要求。一般来说,电子邮箱的格式是:用户名@域名。我们常用的几种电子邮箱的格式如下:QQ邮箱:QQ号(数字)@q...
qq邮箱app垃圾箱在哪 该软件的邮箱app垃圾箱在底部导航栏的“更多”中。该软件的邮箱app垃圾箱操作步骤如下:打开qq邮箱app,进入收件箱页面。点击底部导航栏中的“更多”按钮,进入“更多”页面。...