您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页让老师看

让老师看

来源:抵帆知识网
#include #include #define Maxsize 100 typedef struct {

double data[Maxsize]; int top;

}seqstack,*pseqstack;/*Êý¾ÝÕ»*/ typedef struct {

char data1[Maxsize]; int top1;

}seqstack1,*pseqstack1;/*×Ö·ûÕ»*/

void push(pseqstack s,double x) { /*ÈëÊý¾ÝÕ»*/ s->top++;

s->data[s->top]=x; }

double pop(pseqstack s) { /*³öÊý¾ÝÕ»*/ double x;

x=s->data[s->top]; s->top--; return x; }

void Destory_stack(pseqstack *s) { /*´Ý»ÙÕ»*/ if(*s)

free(*s); *s=NULL; return; }

void push1(pseqstack1 s,char x) {/*Èë×Ö·ûÕ»*/ s->top1++;

s->data1[s->top1]=x; }

char pop1(pseqstack1 s) { /*³ö×Ö·ûÕ»*/ char x;

x=s->data1[s->top1];

s->top1--; return x; }

char get_top(pseqstack1 s) { /*È¡×Ö·ûÕ»¶¥*/ char x;

x=s->data1[s->top1]; return x; }

int Isnum(char ch) { /*ÅжÏÊÇ·ñΪÊý×Ö*/ if(ch>='0'&&ch<='9') return 1; else

return 0; }

int priority(char op) {/*ÇóÓÅÏȼ¶*/ switch(op) {

case '=': case ')':

case '#':return 1; case '+':

case '-':return 2; case '*':

case '/':return 3; case '(':return 4; } }

double calculator(char a[]) { /*¼ÆËã±í´ïʽ*/ int i=0,j;

double Int_part=0,float_part=0,x=0; double c,result,d,b; char ch;

pseqstack s=(pseqstack)malloc(sizeof(seqstack));/*Êý¾ÝÕ»*/

pseqstack1 k=(pseqstack1)malloc(sizeof(seqstack1));/*ÔËËã·ûÕ»*/ s->top=-1; k->top1=-1; push1(k,'#');

while(a[i]!='='||(ch=get_top(k))!='#') {

if(Isnum(a[i])) /*µ±Ç°×Ö·ûΪÊý×Ö*/

{

x=0;Int_part=0;float_part=0; while(a[i]!='.'&&Isnum(a[i])) {

Int_part=Int_part*10+a[i]-'0'; i++; } j=-1;

if(a[i]=='.') {

i++;

while(Isnum(a[i])) {

float_part=float_part+(a[i]-'0')*pow(10,j); i++; j--; } }

x=Int_part+float_part; push(s,x); }

else /*µ±Ç°×Ö·ûΪÔËËã·û*/ if(a[i]!=' ') {

if((get_top(k)=='('&&a[i]!=')')||priority(get_top(k)){ push1(k,a[i]);i++;} else {

if(a[i]==')'&&get_top(k)=='(') {pop1(k);i++;} else {

ch=pop1(k);

/*´ÓÊý¾Ýջѹ³öÁ½¸öÊý,²¢´Ó×Ö·ûջѹ³öÒ»¸öÔËËã·û½øÐмÆËã*/ b=pop(s); d=pop(s); switch(ch) {

case '+':c=d+b;break; case '-':c=d-b;break; case '*':c=d*b;break; case '/':c=d/b;break;

}

push(s,c); } } } }

result=pop(s);

Destory_stack(&s); return result; }

void main() {

char str[20]; double result; int operate;

printf(\"ÇëÊäÈëÄãÏë½øÐеIJÙ×÷£¨0¡ª¡ªÔò½áÊø£¬ÆäËûÈÎÒâµÄ×Ö·ûÔò¼ÌÐø:\");

scanf(\"%d\ getchar();

while(operate!=0) {

printf(\"ÇëÊäÈëÖÐ׺±í´ïʽ(ÿ¸ö²Ù×÷ÊýºóÓÐÒ»¸ö¿Õ¸ñ²¢ÒÔ=ºÅ½áÊø£¡)£º\"); gets(str);

result=calculator(str); printf(\"±í´ïʽ½á¹ûÊÇ:\"); printf(\"%3.3f\\n\

printf(\"ÇëÊäÈëÄãÏë½øÐеIJÙ×÷£¨0¡ª¡ªÔò½áÊø£¬ÆäËûÈÎÒâµÄ×Ö·ûÔò¼ÌÐø:\");

scanf(\"%d\ getchar(); } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务