91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 10KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-15
  • 語言: C/C++
  • 標(biāo)簽: ??

資源簡介

利用棧求表達(dá)式的值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)。 要求:建立試題庫文件,隨機(jī)產(chǎn)生n個題目;題目涉及加減乘除,帶括弧的混合運(yùn)算;隨時可以退出;保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后 的評價。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
int?N;??//定義全局變量,表示試題庫試題數(shù)量
typedef?struct
{
????char?a[100];
????int?result;
}Shiti;??//試題數(shù)據(jù)類型
typedef?struct
{
????int?*base*top;
????int?size;
}Num;?//數(shù)字棧
typedef?struct
{
????char?*base*top;
????int?size;
}Oper;??//運(yùn)算符棧

int?NumInitStack(Num?*S1)??//構(gòu)造數(shù)字棧
{
????S1->base=(int?*)malloc(100*sizeof(int));
????if(!S1->base)
????{
????????printf(“申請內(nèi)存失敗!\n“);
????????return?0;
????}
????S1->top=S1->base;
????S1->size=100;
????return?1;
}

int?OperInitStack(Oper?*S2)??//構(gòu)造運(yùn)算符棧
{
????S2->base=(char?*)malloc(100*sizeof(char));
????if(!S2->base)
????{
????????printf(“申請內(nèi)存失敗!\n“);
????????return?0;
????}
????S2->top=S2->base;
????S2->size=100;
????return?1;
}

int?NumGetTop(Num?*S1)??//得到數(shù)字棧棧頂元素
{
????int?e1;
????if((*S1).top==(*S1).base)
????????return?0;
????e1=*((*S1).top-1);
????????return?e1;
}

char?OperGetTop(Oper?*S2)??//得到運(yùn)算符棧棧頂元素
{
????char?e2;
????if((*S2).top==(*S2).base)
????????return?0;
????e2=*((*S2).top-1);
????????return?e2;
}

void?NumPush(Num?*S1int?e1)??//數(shù)字棧壓棧
{
????*(*S1).top++=e1;
}

void?OperPush(Oper?*S2char?e2)??//運(yùn)算符棧壓棧
{
????*(*S2).top++=e2;
}

int?NumPop(Num?*S1)??//數(shù)字棧彈棧
{
????int?e1;
????if((*S1).top==(*S1).base)
????????return?0;
????e1=*--(*S1).top;
????????return?e1;
}

char?OperPop(Oper?*S2)??//運(yùn)算符棧彈棧
{
????char?e2;
????if((*S2).top==(*S2).base)
????????return?0;
????e2=*--(*S2).top;
????????return?e2;
}

char?Precede(char?achar?b)??//判斷運(yùn)算符優(yōu)先級
{
????int?ij;
????char?Table[8][8]={{‘?‘‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘=‘}
???????????????????{‘+‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘}
???????????????????{‘-‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘}
???????????????????{‘*‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘}
???????????????????{‘/‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘}
???????????????????{‘(‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘?‘}
???????????????????{‘)‘‘>‘‘>‘‘>‘‘>‘‘?‘‘>‘‘>‘}
???????????????????{‘=‘‘<‘‘<‘‘<‘‘<‘‘<‘‘?‘‘=‘}};??//優(yōu)先級表格
????for(i=0;i<8;i++)
????????if(Table[0][i]==a)??//縱坐標(biāo)尋找
????????????break;
????for(j=0;j<8;j++)??//橫坐標(biāo)尋找
????????if(Table[j][0]==b)
????????????break;
????return?Table[j][i];
}

int?Operate(int?achar?thetaint?b)??//計算二元表達(dá)式的值
{
????int?c;
????if(theta==‘+‘)
????????c=a+b;
????else?if(theta==‘-‘)
????????c=a-b;
????else?if(theta==‘*‘)
????????c=a*b;
????else
????????c=a/b;
????return?c;
}

int?IsOper(char?ch)??//判斷字符ch是否為運(yùn)算符
{
????char?ptr[10]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘=‘};
????int?i;
????for(i=0;i<7;i++)
????{
????????if(ch==ptr[i])
????????????return?1;
????}
????return?0;
}

int?Result(char?a[]Num?*numOper?*oper)??//計算表達(dá)式的結(jié)果
{
????char?theta;
????int?bdk=0i=0j=0num2=0;
????NumInitStack(num);??//構(gòu)造數(shù)字棧
????OperInitStack(oper);??//構(gòu)造運(yùn)算符棧
????OperPush(oper‘=‘);??//將“=“壓到棧底
????while(a[i]!=‘=‘||OperGetTop(oper)!=‘=‘)
????{
????????//對表達(dá)式a進(jìn)行計算
????????if(a[i]>=‘0‘&&a[i]<=‘9‘)
????????{
????????????//字符是數(shù)字
??????

評論

共有 條評論

相關(guān)資源