分给我吧,我发你邮箱。我的邮箱为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
如何注册QQ邮箱 qq邮箱去官网注册。注册邮箱具体步骤:1,搜索【qq邮箱】/iknow-pic.cdn.bcebos.com/2934349b033b5bb5e3cc34093dd3d539b600...
大神指点联通手机邮箱有什么用啊 手机邮箱是可以收发电子邮件的平台,与手机绑定后,可设置邮件通知等便利业务。联通手机邮箱用户地址为:手机号码@wo.cn,手机邮箱业务的门户网站:。联通的手机邮箱怎么用?...
怎么样在网易邮箱里存较大文件 1、登录邮箱,打开写信页面,点击“超大附件”,安装上传控件。安装控件成功后,点击“超大附件”弹出上传弹窗,点击“添加文件”上传本机文件。2、普通用户邮箱等级1-10级 白...
企业邮箱有什么实用的管理功能? 一般公司或组织使用企业邮箱会出于统一企业形象、便于沟通管理的目的,企业邮箱的管理功能有哪些? 企业邮箱相比较个人邮箱,一大特点就是需要在这工具上面进行组织管理工作。管理...
一般用企业邮箱哪个比较好? 可以选择TOM企业邮箱,使用了专用的国际网络通道,国内外都可以快速收发邮件,在传输过程中,每一封邮件都会进行SSL协议加密,保护邮件信息的安全。同时,TOM企业邮箱可以关联...
中企动力企业邮箱怎么样? 中企动力做网站还是不错的,而且做得网站很能适应seo,至于你说的海外推广服务,确实有这方面服务,朋友公司做过,效果还可以吧。很多用户都是先沟通3-5小时,看一下服务水平和客服...