第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言代碼的解釋?

c語言代碼的解釋?

請問一下這段代碼是數(shù)據(jù)結(jié)構(gòu)的,誰能看得懂能給我解釋一下?#include"stdio.h"#include"stdlib.h"#include"string.h"#include"math.h"#define true 1#define false 0#define OPSETSIZE 8typedef int Status;?unsigned char Prior[8][8] ={ // 運(yùn)算符優(yōu)先級表// '+' '-' '*' '/' '(' ')' '#' '^'/*'+'*/'>','>','<','<','<','>','>','<',/*'-'*/'>','>','<','<','<','>','>','<',/*'*'*/'>','>','>','>','<','>','>','<',/*'/'*/'>','>','>','>','<','>','>','<',/*'('*/'<','<','<','<','<','=',' ','<',/*')'*/'>','>','>','>',' ','>','>','>',/*'#'*/'<','<','<','<','<',' ','=','<',/*'^'*/'>','>','>','>','<','>','>','>'};?typedef struct StackChar{??? char c;??? struct StackChar *next;}SC;//StackChar類型的結(jié)點(diǎn)SC?typedef struct StackFloat{?? float f;?? struct StackFloat *next;}SF;//StackFloat類型的結(jié)點(diǎn)SF?SC *Push(SC *s,char c)//SC類型的指針Push,返回p{??? SC *p=(SC*)malloc(sizeof(SC));??? p->c=c;??? p->next=s;??? return p;}?SF *Push(SF *s,float 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 a,unsigned char theta, float b)//計(jì)算函數(shù)Operate{??? switch(theta)??? {??? case '+': return a+b;??? case '-': return a-b;??? case '*': return a*b;??? case '/': return a/b;??? case '^': return pow(a,b);??? default : return 0;??? }}?char OPSET[OPSETSIZE]={'+','-','*','/','(',')','#','^'};?Status In(char Test,char *TestOp){??? int Find=false;??? for (int i=0; i< OPSETSIZE; i++)??? {?????? if(Test == TestOp[i])?????????? Find= true;??? }??? return Find;}?Status ReturnOpOrd(char op,char *TestOp){??? for(int i=0; i< OPSETSIZE; i++)??? {?????? if (op == TestOp[i])?????????? return i;??? }}?char precede(char Aop, char Bop){??? return Prior[ReturnOpOrd(Aop,OPSET)][ReturnOpOrd(Bop,OPSET)];}?float EvaluateExpression(char* MyExpression){??? // 算術(shù)表達(dá)式求值的算符優(yōu)先算法??? // 設(shè)OPTR和OPND分別為運(yùn)算符棧和運(yùn)算數(shù)棧,OP為運(yùn)算符集合??? SC *OPTR=NULL;?????? // 運(yùn)算符棧,字符元素??? SF *OPND=NULL;? ?????// 運(yùn)算數(shù)棧,實(shí)數(shù)元素??? char TempData[20];??? float Data,a,b;??? char theta,*c,Dr[]={'#','\0'};??? OPTR=Push(OPTR,'#');??? c=strcat(MyExpression,Dr);??? strcpy(TempData,"\0");//字符串拷貝函數(shù)??? while (*c!= '#' || OPTR->c!='#')??? {?????? if (!In(*c, OPSET))?????? {?????????? Dr[0]=*c;?????????? strcat(TempData,Dr);?????????? //字符串連接函數(shù)?????????? c++;?????????? if (In(*c, OPSET))?????????? {????????????? Data=atof(TempData);?????? //字符串轉(zhuǎn)換函數(shù)(double)????????????? OPND=Push(OPND, Data);????????????? strcpy(TempData,"\0");?????????? }?????? }?????? else??? // 不是運(yùn)算符則進(jìn)棧?????? {?????????? switch (precede(OPTR->c, *c))?????????? {?????????? case '<': // 棧頂元素優(yōu)先級低????????????? OPTR=Push(OPTR, *c);????????????? c++;????????????? break;?????????? case '=': // 脫括號并接收下一字符????????????? OPTR=Pop(OPTR);????????????? c++;????????????? break;?????????? case '>': // 退棧并將運(yùn)算結(jié)果入棧????????????? theta=OPTR->c;OPTR=Pop(OPTR);????????????? b=OPND->f;OPND=Pop(OPND);????????????? a=OPND->f;OPND=Pop(OPND);????????????? OPND=Push(OPND, Operate(a, theta, b));????????????? break;?????????? } //switch?????? }??? } //while??? return OPND->f;} //EvaluateExpression?int main(void){??? char s[128];??? puts("請輸入表達(dá)式:");??? gets(s);??? puts("該表達(dá)式的值為:");??? printf("%s\b=%g\n",s,EvaluateExpression(s));??? system("pause");??? return 0;}??
查看完整描述
  • 3 回答
  • 0 關(guān)注
  • 1655 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號