c语言编程计算机 可加减乘除,编程让计算机可以进行加减乘除运算

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

ieptvYHG8

2017.01.03

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:50%    等级:9

已帮助:2014人

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211typedef char flag; typedef double cflag; #define NEW_STACK(STACK_NAME,TYPE) \ struct STACK_NAME \ {                                   \  TYPE*b;TYPE*h;int size;            \                                        \ flag init(STACK_NAME* in)          \ {                                      \  if(!(in->b=(TYPE*)malloc(10*sizeof(TYPE))))return 0;    \  in->size=10*sizeof(TYPE);             \  in->h=in->b;  \  return 1;  \                  \ }                    \ flag isnull(STACK_NAME*in)   \  {                  \  if(in->b==in->h)    \   return 1;   \  else             \   return 0;     \  }                   \ flag pop(STACK_NAME*in,TYPE *a)    \  {                \  if(isnull(in))return 0;   \  *a=*(--in->h);    \  return 1;       \                  \  }       \ flag push(STACK_NAME*in,TYPE a)   \  {      \  if(in->h-in->b>=in->size)    \  {                \   if(!(in->b=(TYPE*)realloc(in->b,in->size+10*sizeof(TYPE))))return 0; \   in->h=in->b+in->size;   \   in->size+=10*sizeof(TYPE);   \  }    \  *(in->h)=a;   \  in->h++;    \  return 1;   \  }  \ \ TYPE gettop(STACK_NAME*in)  \   {   \     TYPE*a=in->h-1;   \  return *a;   \   }  \ };/****stack.h******/#include#include#include#include#include"stack.h"#define isnum(n) ((n>='0'&&n<='9')||n=='.')NEW_STACK(csta,char)NEW_STACK(dsta,double)/*precede block*/int ctoiex(char a){ int b; if (a==')') b=1; if(a=='+'||a=='-')b=2; if(a=='*'||a=='/')b=3; if(a=='(')b=4; if(a=='#')b=0; return b;}char precede(char a,char b){   int a1=ctoiex(a); int b1=ctoiex(b); if((a1==4&&b1==1)||((a1==0)&&(b1==0)))return '='; if(a1>=b1) return '>'; else return '')   {   opnd.push(&opnd,atonum(b,j));   j=0;   }   switch(f=precede(optr.gettop(&optr),tmp1))   {   case '':    optr.pop(&optr,&c);    opnd.pop(&opnd,&op1);    opnd.pop(&opnd,&op2);    opnd.push(&opnd,operate(op2,op1,c));    break;   }  }       }     printf("\n%f\n",opnd.gettop(&opnd)); return 0;}

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值