資源簡介
文件內容(利用棧求表達式的值任務書,說明書,源代碼)。
軟件環境:TC。
實現功能:建立試題庫文件,隨機產生n個題目;題目涉及加減乘除,帶括弧的混合運算;利用棧求解表達式的值;隨時可以退出。
在C環境中都能實現。

代碼片段和文件信息
#include?
#include?
#include??
#include
#include?
#define?STACK_INIT_SIZE?100
#define?STACKINCREMENT?10
#define?OK?0
#define?ERROR?1
char?Table[8][8]={??‘?‘‘+‘‘-‘‘*‘?‘/‘?‘(‘‘)‘‘#‘??????/*運算符優先級表格*/
????????????????????????????‘+‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
????????????????????????????‘-‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
????????????????????????????‘*‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
????????????????????????????‘/‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
?????????????????????????????‘(‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘?‘
?????????????????????????????‘)‘‘>‘‘>‘‘>‘‘>‘‘?‘‘>‘‘>‘
????????????????????????????‘#‘‘<‘‘<‘‘<‘‘<‘‘<‘‘?‘‘=‘
?????????????????????????};????????
char?ptr[10]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘=‘}?;????????????????????????/*運算符*/
typedef?struct?shiti????????????????/*定義表達式*/
{
????char?a[20];??????????/*存放表達式*/
????long?result;??????????/*存放用戶輸入的答案*/
}xuanti;
typedef?struct?SqStack1???????????/*建立數字棧*/
{?
????int?*base;
????int?*top;
????int?stacksize;
}SqStack1;??????????????
typedef?struct?SqStack2????????????/*建立運算符棧*/
{
????char?*base;
????char?*top;
????int?stacksize;
}SqStack2;???????????????
void?WriteToFile(xuanti?*pstuint?num);????????????
void?ReadFromFile(xuanti?*pstuint?num);
void?page_title()???????????/*建立菜單*/
{
????printf(“>>>?Math?excercises?liberary?<<<\n\n“);
????printf(“???--Operation?Menu--\n“);
????printf(“1?Start?the?test\n“);
????printf(“2?History?of?the?scores\n“);
????printf(“0?exit\n“);
????printf(“******************\n“);
}
void?return_confirm()???????????????????????????/*按任意鍵返回菜單*/
{
?????printf(“Press?any?key?to?return?!\n“);
?????getch();
}
void?IntInitStack(SqStack1?*S1)?????????????/*數字棧初始化*/
{
????S1->base=(int?*)malloc(STACK_INIT_SIZE*sizeof(int));
????if(!S1->base)
????????exit(ERROR);
????S1->top=S1->base;
????S1->stacksize=STACK_INIT_SIZE;
}
void?CharInitStack(SqStack2?*S2)????????????/*運算符棧初始化*/
{
????S2->base=(char?*)malloc(STACK_INIT_SIZE*sizeof(char));
????if(!S2->base)
???????exit(ERROR);
????S2->top=S2->base;
????S2->stacksize=STACK_INIT_SIZE;
}
long?IntGetTop(SqStack1?*S1)????????????????/*取數字棧棧頂元素*/
{?
????long?e1;
????if((*S1).top==(*S1).base)?
????????return?0;
????e1=*((*S1).top-1);
????return?e1;
}
char?CharGetTop(SqStack2?*S2)????????????/*取運算符棧棧頂元素*/
{?
????char?e2;
????if((*S2).top==(*S2).base)?
????????return?0;
????e2=*((*S2).top-1);
????return?e2;
}
int?IntPush(SqStack1?*S1int?e1)??????????????/*入棧*/
{
????*(*S1).top++=e1;
????return?OK;
}
int?CharPush(SqStack2?*S2char?e2)?????????/*入棧*/
{
????*(*S2).top++=e2;
????return?OK;
}
int?IntPop(SqStack1?*S1)?????????????????????????/*出棧*/
{
????int?e1;
????if((*S1).top==(*S1).base)
???return?0;
????e1=*--(*S1).top;
????return?e1;
}
char?CharPop(SqStack2?*S2)?????????????????????/*出棧*/
{
????char?e2;
????if((*S2).top==(*S2).base)
????????return?0;
????e2=*--(*
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????80384??2009-06-26?07:47??羅文鳳(利用棧求表達式的值)\利用棧求表達式的值源代碼.doc
?????文件?????112128??2009-06-26?00:53??羅文鳳(利用棧求表達式的值)\利用棧求表達式的值說明書.doc
?????文件??????76800??2009-06-15?13:38??羅文鳳(利用棧求表達式的值)\利用棧求解表達式的值任務書.doc
?????文件??????????7??2009-06-23?21:39??羅文鳳(利用棧求表達式的值)\源代碼\MARKREC.txt
?????文件??????????2??2009-06-23?21:39??羅文鳳(利用棧求表達式的值)\源代碼\N_REC.txt
?????文件????????480??2009-06-22?09:51??羅文鳳(利用棧求表達式的值)\源代碼\SHITIKU.txt
?????文件??????12926??2009-06-25?20:55??羅文鳳(利用棧求表達式的值)\源代碼\Stack.c
?????目錄??????????0??2009-07-15?17:11??羅文鳳(利用棧求表達式的值)\源代碼
?????目錄??????????0??2009-07-15?17:11??羅文鳳(利用棧求表達式的值)
-----------?---------??----------?-----??----
???????????????282727????????????????????9
- 上一篇:GPS詞匯及縮寫-gps專業資料
- 下一篇:微機課程設計 競賽搶答器四路
評論
共有 條評論