版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)姓名:王宗敏班級(jí):軟件102111班學(xué)號(hào):10211112目錄:11需求分析……………21概要設(shè)計(jì)……………3□詳細(xì)設(shè)計(jì)……………41調(diào)試分析……………51用戶使用說(shuō)明………61測(cè)試結(jié)果……………利用棧求表達(dá)式的值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)。需求分析任務(wù):通過(guò)此系統(tǒng)可以實(shí)現(xiàn)如下功能:此系統(tǒng)能夠輸入一個(gè)表達(dá)式,并計(jì)算該表達(dá)式的值??梢愿鶕?jù)計(jì)算結(jié)果給出分?jǐn)?shù)。能供小學(xué)生進(jìn)行簡(jiǎn)單的四則運(yùn)算,此外這里特別強(qiáng)調(diào)括號(hào)的匹配!要求:根據(jù)以上功能說(shuō)明,設(shè)計(jì)運(yùn)算信息,堆棧的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完成功能;概要設(shè)計(jì)在此說(shuō)明每個(gè)部分的算法設(shè)計(jì)說(shuō)明(可以是描述算法的流程圖),每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫出該存儲(chǔ)結(jié)構(gòu)的定義)。詳細(xì)代碼#include"string.h"#include"stdio.h"#include"conio.h"#definemaxsize100#include"ctype.h"typedefchardatatype;typedefstruct{datatypestack[maxsize];inttop;}seqstack;voidstackinitiate(seqstack*s)s->top=0;}intstacknotempty(seqstacks){if(s.top<=0)return0;elsereturn1;}intstackpush(seqstack*s,datatypex){if(s->top>=maxsize){printf("堆棧已滿無(wú)法插入!\n");return0;}else{s->stack[s->top]=x;s->top++;return1;}}intstackpop(seqstack*s,datatype*d){if(s->top<=0){printf("堆棧已空無(wú)數(shù)據(jù)元素出棧!\n");return0;}else{s->top--;*d=s->stack[s->top];return1;}}intstacktop(seqstacks,datatype*d){if(s.top<=0){printf("堆棧已空!\n");return0;}else{*d=s.stack[s.top-1];return1;}}voidexpiscorrect(charexp[],intn){seqstackmystack;inti;charc;stackinitiate(&mystack);for(i=0;i<n;i++){if(exp[i]=='(')stackpush(&mystack,exp[i]);elseif((exp[i]==')')&&stacknotempty(mystack)&&stacktop(mystack,&c)&&c=='(')stackpop(&mystack,&c);elseif((exp[i]==')')&&!stacknotempty(mystack)){printf("右括號(hào)多余左括號(hào)!\n");return;}}if(stacknotempty(mystack))printf("左括號(hào)多余右括號(hào)!\n");elseprintf("左右括號(hào)匹配正確!\n");}staticfloatans[50];staticintcount=0;staticintright=0;staticfloatyourresult[50];intpostexp(charexp[])seqstackmystack;datatypex1,x2;inti;intj=0,ls;inttop=0;intisFalse=0;intisRead=0;charoprator='';stackinitiate(&mystack);for(i=0;exp[i]!='#';i++){if(isdigit(exp[i])){top=(int)(exp[i]-48);top*=10;}else{if(isRead==0){isRead++;top/=10;stackpush(&mystack,top);oprator=exp[i];top=0;}elseif(isRead==1){stackpush(&mystack,top);if(isRead==1){isRead++;stackpop(&mystack,&x2);}stackpop(&mystack,&x1);ls=x1;x1=x2;x2=ls;x1/=10;switch(oprator){case'+':{x1+=x2;break;}case'-':{x1-=x2;break;}case'*':{x1*=x2;break;}case'/':{if(x2==0.0){printf("除數(shù)為0錯(cuò)!\n");isFalse=1;}else{x1/=x2;}};break;}oprator=exp[i];x2=x1;top=0;}}}if(isRead==0){isRead++;top/=10;stackpush(&mystack,top);oprator=exp[i];top=0;}elseif(isRead==1){stackpush(&mystack,top);if(isRead==1){isRead++;stackpop(&mystack,&x2);}stackpop(&mystack,&x1);ls=x1;x1=x2;x2=ls;x1/=10;switch(oprator){case'+':{x1+=x2;break;}case'-':{x1-=x2;break;}case'*':{x1*=x2;break;}case'/':{if(x2==0.0){printf("除數(shù)為0錯(cuò)!\n");isFalse=1;}else{x1/=x2;}};break;}oprator=exp[i];x2=x1;top=0;}if(isFalse==1)return-1;ans[count]=x1;printf("請(qǐng)輸入您計(jì)算的結(jié)果:”);scanf("%f",&yourresult[count]);if(ans[count]==yourresult[count])right++;count++;getchar();}intmain(){inti=0;charexp[100];printf("———計(jì)算表達(dá)式———\n使用說(shuō)明:\n");printf("1.請(qǐng)輸入要計(jì)算的表達(dá)式,以#結(jié)尾,例如1+2#\n");printf("2.結(jié)束計(jì)算請(qǐng)輸入符號(hào)$\n");printf("3.在表達(dá)式中可以運(yùn)算括號(hào),中括號(hào)口和大括號(hào){}統(tǒng)一使用小括號(hào)代替()!\n");printf("4.程序輸入格式錯(cuò)誤時(shí),將會(huì)自動(dòng)結(jié)束程序,請(qǐng)注意格式正確!\n");printf("請(qǐng)輸入要計(jì)算的表達(dá)式,以#結(jié)尾。結(jié)束程序輸入$。\n");//c=getchar();scanf("%s",exp);while(exp[i]!='$'){expiscorrect(&exp,i);postexp(&exp);printf(" \n");printf("請(qǐng)輸入下一個(gè)表達(dá)式,以#結(jié)尾。結(jié)束程序輸入$。\n");scanf("%s",exp);//c=getchar();}printf("\n\n ******您的成績(jī)單*******也)printf(" \n");printf("序號(hào) 正確答案 您的答案結(jié)論\n");for(i=0;i<count;i++){printf("表達(dá)式%d %.2f %.2f %s\n",i+1,ans[i],yourresult[i],ans[i]==yourresult[i]?"正確!":"錯(cuò)誤!");}printf(" \n");printf("解答題目總共為%d道,其中\(zhòng)n",count);printf("正確解答%d道題,錯(cuò)誤解答%4道題。也 *****最后得分為%d分!*****\n",right,count-right,right*100/count);printf(" \n");getchar();getchar();return0;}.計(jì)算表達(dá).式3.在表達(dá)民讓尊的表達(dá)式,.需G至酷號(hào)以隨吉尾,例如工+壓束中自尾&嘉就大括號(hào)<〉統(tǒng)-'使用小括號(hào)代替C聿輸鬻意格式正確I以*結(jié)尾11.3.|i]Ant:方算的表達(dá)式,‘法刀口.在.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)護(hù)理學(xué)傳統(tǒng)療法
- 化學(xué)制藥工藝技術(shù)
- 《GAZ 03-2008道路交通管理標(biāo)準(zhǔn)體系表》專題研究報(bào)告深度
- 游戲技術(shù)發(fā)展
- 人力資源外包服務(wù)合同2026年社保協(xié)議
- 2025年企業(yè)產(chǎn)品生命周期管理與質(zhì)量控制手冊(cè)
- 2026年美容院護(hù)理服務(wù)合同協(xié)議
- 2026年無(wú)人農(nóng)場(chǎng)管理合同協(xié)議
- 2026年餐飲企業(yè)員工培訓(xùn)協(xié)議合同
- 2026英特爾(中國(guó))校招面試題及答案
- 2026年藥廠安全生產(chǎn)知識(shí)培訓(xùn)試題(達(dá)標(biāo)題)
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫(kù)及參考答案詳解1套
- 承包團(tuán)建燒烤合同范本
- 口腔種植牙科普
- 2025秋人教版七年級(jí)全一冊(cè)信息科技期末測(cè)試卷(三套)
- 搶工補(bǔ)償協(xié)議書
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第1部分:土石方工程
- 英語(yǔ)A級(jí)常用詞匯
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 英語(yǔ)試卷(含標(biāo)準(zhǔn)答案)+聽力音頻
- 汽車修理廠輪胎采購(gòu) 投標(biāo)方案(技術(shù)標(biāo) )
- 2023年7月浙江省普通高中學(xué)業(yè)水平考試(學(xué)考)化學(xué)試題
評(píng)論
0/150
提交評(píng)論