///*日期:2012.4.21*/
/*功能:四則運算*/
#include "stdafx.h"
#include #include #include #define data 1
#define oper 0
#define over -1
typedef struct stacknode
stacknode,*linkstackptr;
typedef struct linkstack
linkstack;
typedef struct dataoroper
dataoroper;
int compute(linkstack *s,const dataoroper* backstring);//通過字尾表示式計算結果
int stackempty(linkstack s);//檢測堆疊是否空
int push(linkstack *s,int e);//壓棧
int pop(linkstack *s,int *e);//彈棧
int operate(char oper,int operatedata1,int operatedata2);//運算操作
void frontstring2backstring(linkstack *l,const dataoroper* s,dataoroper *d);//中綴表示式轉化為字尾表示式
char checkprior(char operator1,char operator2);//比較運算子優先順序
void string2frontstring(char *string,dataoroper *d);//字串轉換為中綴表示式
char operators[7]="+-*/()";//運算子陣列
char prioritytable[6][6]= //運算子優先順序陣列, ,
, ,, ,
};/*dataoroper frontstring=,,,,,
,,,,,
,,,};*/
//char string="19+(3-1)*13+14/2";
int main(int argc, char* argv)
int push(linkstack *s,int e)
int pop(linkstack *s,int *e)
int gettop(linkstack *s,int *e)
int stackempty(linkstack s)
int operate(char oper,int operatedata1,int operatedata2)
return temp;
}int compute(linkstack *s,const dataoroper* backstring)
backstring++;
} pop(s,&temp);
return temp;
}void frontstring2backstring(linkstack *l,const dataoroper* s,dataoroper *d)
}if(stackempty(*l))
}else if(s->dataoroper==data)
s++;
} while(stackempty(*l)==0)
d->data=-1;
d->dataoroper=over;
}char checkprior(char operator1,char operator2)
void string2frontstring(char *string,dataoroper *d)
d->data=sum;
d->dataoroper=data;
d++;
} else
}d->data=-1;
d->dataoroper=over;
}
棧 實現四則運算
題目描述 給定乙個字串描述的算術表示式,計算出結果值。輸入字串長度不超過100,合法的字元包括 0 9 字串內容的合法性及表示式語法的合法性由做題者檢查。本題目只涉及整型計算。題目描述 給定乙個字串描述的算術表示式,計算出結果值。輸入字串長度不超過100,合法的字元包括 0 9 字串內容的合法性及表...
四則運算v1 0
題目 v1.0花二十分鐘寫乙個能自動生成30道小學四則運算題目的 軟體 v2.0題目避免重複 可定製 數量 列印方式 package sizeyunsuan 30道100以內四則運算 public class random public static char getcharrandom retur...
10以內四則運算 程式
注意10以內的隨機數是如何生成的。另一種方法,rand 10,結果也為0 9之間的數 rand max是乙個符號常量,定義在cstdlib中。在visual c 中,它的值為32767.rand 每次呼叫會生成乙個0 rand max整數1 計算機四則運算,10以內 2 include 3 incl...