資源簡介
利用棧求表達式課程設計一:設計目的
利用棧求表達式的值,可供小學生使用,并能給出分數(shù),并且可以給出評價。
二:設計要求
建立試題庫文件,隨機產(chǎn)生n個題目;題目涉及加減乘除,帶括號的混合運算;隨時可以退出;保留歷史分數(shù)能回顧歷史,給出與歷史的分數(shù)的比較后的評價。
三:設計思想
首先建立三個文件,分別為shitiku.txt,markrec.txt,n_rec.txt。其中shitiku.txt中存放試題;markrec.txt存放歷史分數(shù);n_rec.txt存放總共測試次數(shù)。

代碼片段和文件信息
?#include?
#include?
#include?
#include?
#define?STACK_INIT_SIZE?100
#define?STACKINCREMENT?10
#define?OK?0
#define?ERROR?1
typedef?struct?shiti??????????????
{//定義表達式
????char?a[20];??????????/*存放表達式*/
????long?result;??????????/*存放用戶輸入的答案*/
}xuanti;
typedef?struct?SqStack1??????????
{?//建立數(shù)字棧
????int?*base;
????int?*top;
????int?stacksize;
}SqStack1;?
typedef?struct?SqStack2??????????
{//建立運算符棧
????char?*base;
????char?*top;
????int?stacksize;
}SqStack2;??
void?page_title()??????????
{//建立菜單
????printf(“\t>>>?數(shù)學習題庫<<<\n\n“);
????printf(“?\t?---?主菜單?---\n\n“);
????printf(“\t1?開始測試\n“);
????printf(“\t2?查看歷史分數(shù)記錄\n“);
printf(“\t3?增加問題\n“);
????printf(“\t0?退出\n“);
????printf(“\t******************\n“);
}
void?return_confirm()????????????????????????
{//按任意鍵返回菜單
?????printf(“\n按任意鍵返回?!……\n“);
?????getch();
}
void?IntInitStack(SqStack1?*S1)????????????
{//數(shù)字棧初始化
????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(0);
????S2->top=S2->base;
????S2->stacksize=STACK_INIT_SIZE;
}
long?IntGetTop(SqStack1?*S1)??????????????
{?//取數(shù)字棧棧頂元素
????long?e1;
????if((*S1).top==(*S1).base)?
????????return?0;
????e1=*(--(*S1).top);
????return?e1;
}
char?CharGetTop(SqStack2?*S2)????????????
{?//取運算符棧棧頂元素
????char?e2;
????if((*S2).top==(*S2).base)?
????????return?0;
????e2=*(--(*S2).top);
????return?e2;
}
int?IntPush(SqStack1?*S1int?e1)/*入棧*/
{
????*(*S1).top++=e1;
????return?OK;
}
int?CharPush(SqStack2?*S2char?e2)/*入棧*/
{
????*(*S2).top++=e2;
????return?1;
}
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=*--(*S2).top;
????return?e2;
}
?????????????
char?Precede(char?achar?b)??????????????????
{//運算符優(yōu)先級比較
????int?ij;
??char?Table[8][8]={‘?‘‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘?????
????????????????????‘+‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
????????????????????‘-‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
????????????????????‘*‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
????????????????????‘/‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
????????????????????‘(‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘?‘
????????????????????‘)‘‘>‘‘>‘‘>‘‘>‘‘?‘‘>‘‘>‘
????????????????????‘#‘‘<‘‘<‘‘<‘‘<‘‘<‘‘?‘‘=‘
???????????????????};??????/*運算符優(yōu)先級表格*/??
????for(i=0;i<8;i++)???/*縱坐標尋找*/
????????if(Table[0][i]==a)??????????
????????????break;
????for(j=0;j<8;j++)????/*橫坐標尋找*/
????????if(Table[j][0]==b)
????????????break;
????return?Table[j][i];??/*返回比較結果*/
}
int?Operate(int?achar?thetaint?b)?????
{?//計算表達式值:主要是將大的表達式轉化為小的表達式進行逐步求值
????int?c;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????545??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\liyongzhan.dsw
?????文件??????33792??2009-07-20?08:58??利用棧求表達式課程設計\利用棧求表達式值\liyongzhan.ncb
?????文件??????12514??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\liyongzhan.cpp
?????文件???????1339??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\liyongzhan.plg
?????文件??????????5??2009-07-20?08:37??利用棧求表達式課程設計\利用棧求表達式值\N_REC.txt
?????文件????????552??2009-07-20?08:37??利用棧求表達式課程設計\利用棧求表達式值\SHITIKU.txt
?????文件?????????40??2009-07-20?08:37??利用棧求表達式課程設計\利用棧求表達式值\markrec.txt
?????文件??????48640??2009-07-20?08:58??利用棧求表達式課程設計\利用棧求表達式值\liyongzhan.opt
?????文件???????4332??2009-07-20?08:58??利用棧求表達式課程設計\利用棧求表達式值\liyongzhan.dsp
?????文件??????33792??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\vc60.idb
?????文件??????45056??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\vc60.pdb
?????文件?????228000??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\liyongzhan.pch
?????文件??????33531??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\liyongzhan.obj
?????文件?????229832??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\liyongzhan.ilk
?????文件?????192612??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\liyongzhan.exe
?????文件?????443392??2009-07-20?08:50??利用棧求表達式課程設計\利用棧求表達式值\Debug\liyongzhan.pdb
?????文件??????????5??2009-07-20?08:37??利用棧求表達式課程設計\利用棧求表達式值\Debug\N_REC.txt
?????文件????????552??2009-07-20?08:37??利用棧求表達式課程設計\利用棧求表達式值\Debug\SHITIKU.txt
?????文件?????????40??2009-07-20?08:37??利用棧求表達式課程設計\利用棧求表達式值\Debug\markrec.txt
?????文件??????????5??2009-07-20?08:37??利用棧求表達式課程設計\報告書\源程序\N_REC.txt
?????文件?????????40??2009-07-20?08:37??利用棧求表達式課程設計\報告書\源程序\markrec.txt
?????文件?????192612??2009-07-20?08:50??利用棧求表達式課程設計\報告書\源程序\liyongzhan.exe
?????文件????????552??2009-07-20?08:37??利用棧求表達式課程設計\報告書\源程序\SHITIKU.txt
?????文件??????12513??2011-06-24?10:02??利用棧求表達式課程設計\報告書\源程序\liyongzhan.cpp
?????文件?????125952??2011-12-22?19:32??利用棧求表達式課程設計\報告書\數(shù)據(jù)結構課程設計報告.doc
?????目錄??????????0??2009-07-20?08:58??利用棧求表達式課程設計\利用棧求表達式值\Debug
?????目錄??????????0??2009-07-20?09:02??利用棧求表達式課程設計\報告書\源程序
?????目錄??????????0??2009-07-20?08:58??利用棧求表達式課程設計\利用棧求表達式值
?????目錄??????????0??2009-07-20?08:59??利用棧求表達式課程設計\報告書
?????目錄??????????0??2009-07-20?08:53??利用棧求表達式課程設計
............此處省略3個文件信息
評論
共有 條評論