版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、麗水學(xué)院C 語言課程設(shè)計總結(jié)報告題目計算器指導(dǎo)教師院系專業(yè)班級學(xué) 02)姓名成績二一五年七月十五日表1 進度安排表C語言課程設(shè)計進度表選題名稱:計算器班級:學(xué)號:02)姓名:任課教師:盧敏一、系統(tǒng)設(shè)計起始時間及計劃完成時間:6.27 6.28二、系統(tǒng)實現(xiàn)起始時間及計劃完成時間:6.28 6.30三、測試起始時間及計劃完成時間:6.30 7.01表 2 中期報告表C語言課程設(shè)計中期報告(系統(tǒng)設(shè)計)選題名稱:計算器班級:網(wǎng)絡(luò) 15學(xué)號02)姓名:陳標(biāo)任課教師:盧敏起始時間及計劃完成時間:6.27 7.01一、題目(問題)
2、描述該計算器主要實現(xiàn)的是四則運算,以及N次方的運算,階乘運算和累加運算;其中對溢出需要進行控制,對錯誤的輸入進行提示以及對運算結(jié)果進行清零或繼續(xù)運算;另外需要一個列舉功能的實現(xiàn)計算器功能的菜單,有需要時可設(shè)置二級或者三級菜單,使條理更加清楚。二、問題分析實現(xiàn)最基本計算器的功能需要進行進行加減乘除的運算,這時就有兩種思路:一是利用線性關(guān)系進行處理,將數(shù)字進行一次一次的運算,這樣的運算效果低,相對來說功能也弱。二是利用棧進行處理,可輸入數(shù)字的表達(dá)式, 。三、系統(tǒng)設(shè)計1程序總體結(jié)構(gòu)主菜單大數(shù)菜單小數(shù)菜單四則運算加減乘除N次方階乘累加2界面設(shè)計界面設(shè)計運用了簡單的菜單布局,設(shè)計了二級菜單,可以進行隨意
3、來返兩個菜單之間。菜單第一行都是提示輸入信息或進行該菜單的描述,后面若干行都是該菜單功能的描述。一級主菜單/*計算器*/*請按照提示進行輸入數(shù)字*/1.進行加減乘除運算2.N次方運算3.階乘運算4.累加運算5.大數(shù)的加減乘除6.退出小數(shù)二級菜單/*請按照提示進行輸入數(shù)字*/1.N 次方運算2.階乘運算3.累加運算4.清零并返回大數(shù)二級菜單/*請按照提示進行輸入數(shù)字*/1.加法運算2.減法運算3.乘法運算4.除法運算5.返回菜單目錄第一章系統(tǒng)功能說明1第二章程序結(jié)構(gòu)22 1 程序結(jié)構(gòu)說明22 2 重要數(shù)據(jù)說明22 3 函數(shù)清單3第三章使用說明73 1 安裝手冊73 2 使用手冊7第四章系統(tǒng)設(shè)計難
4、點及其解決方法94 1 棧的四則運算94 2 大數(shù)的加減乘除94 2 1 大數(shù)的加法94 2 2 大數(shù)的減法94 2 3 大數(shù)的乘法94 2 3 大數(shù)的除法9第五章不足之處10計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告第一章系統(tǒng)功能說明本程序可實現(xiàn)簡單的計算機功能,對數(shù)字進行加減乘除的運算,N次方的運算,階乘和累加,并能對錯誤的輸入進行提示,對溢出進行判斷以及繼續(xù)運算和返回菜單的功能。對小數(shù)的加減乘數(shù)是利用棧來實現(xiàn)的,因此與一般的須分步進行運算的計算器不同,該計算器可直接輸入一串關(guān)于運算的表達(dá)式,并以#結(jié)束,可直接輸出結(jié)果,無需人為的判斷優(yōu)先關(guān)系,進行分步運算,因此在運算操作上大大節(jié)省了用戶的時
5、間,減少了繁瑣的步驟。 。1計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告第二章程序結(jié)構(gòu)21程序結(jié)構(gòu)說明該計算器程序大體結(jié)構(gòu)如圖2-1所示。主菜單大數(shù)菜單四則運算N次方階乘累加加減乘除圖 2-1計算器程序大體結(jié)構(gòu)程序結(jié)構(gòu)如圖所示,通過主菜單可直接進入棧的四則運算,N 次方運算,階乘運算和累加運算; 另外也可通過主菜單進入大數(shù)菜單的界面,進而選擇大數(shù)加法運算,大數(shù)減法運算,大數(shù)乘法運算或大數(shù)除法運算。22重要數(shù)據(jù)說明/- 全局變量 -int N=0;/ 作為全局變量使用,用于存儲運算結(jié)果/- 函數(shù)結(jié)果狀態(tài)代碼-#define TRUE 1#define FALSE 0#define OK 1#defi
6、ne ERROR 0#define OVERFLOW -2 / 用于分配地址空間錯誤時的返回#define MN 1000 / 大數(shù)的存放位數(shù)上限/- 定義函數(shù)類型,返回結(jié)果狀態(tài)代碼-2計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告typedef int Status;/- 定義棧的元素類型-typedef int ElemType;/- 棧的順序存儲表示-#define STACK_INIT_SIZE 100#define STACKINCREMENT 10/- 順序棧的定義,并定義棧頂和棧底元素-typedef structElemType *base;ElemType *top;int sta
7、cksize;Stack;23函數(shù)清單/- 大數(shù)運算基本操作的函數(shù)原型說明-1int Inversion(char *str);/ 該函數(shù)為倒置函數(shù), 可引入一個數(shù)組將數(shù)組中元素倒置存放。該函數(shù)大體流程如圖2-2所示。倒置函數(shù)引入需要倒置的函數(shù)調(diào)用函數(shù)求函數(shù)長度為len,設(shè) i=0 ,定義暫時存儲變量i<len/2 ?c=stri;stri=strlen-i-1;YesNostrlen-i-1=c;結(jié)束i+ ;c通過折半交換的方法,從第一個元素到到倒數(shù)第二個元素,通過暫時存儲的變量c 進行交換圖 2-2倒置函數(shù)3計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告2int numcomp(char
8、*a,char *b);/ 該函數(shù)為字符串大小比較的函數(shù),對個數(shù)組中元素進行逐一比較若相等返回0,不然返回第一次出現(xiàn)差異的兩數(shù)之差。該函數(shù)大體流程如圖2-3所示。大小比較函數(shù)結(jié)束引入需要比較的兩個的函數(shù)求得第一個函數(shù)的長度為la,第二個為 lb返回 alb-blbNoYesLa! =lb ?lb<la ?alb-blb !=0?YesNo返回兩數(shù)之差結(jié)束Lb+ ;圖 2-3字符串比較函數(shù)3int carry(char * num);/ 進位函數(shù), 引入數(shù)組, 利用算法使得原先以ASCII 存儲的非 09的元素以 0 9的字符存儲。該函數(shù)大體流程如圖2-4所示。進位算法求得引入的函數(shù)長度為
9、len,并調(diào)用 Inversion(char*str) ,使得原數(shù)組中的元素進行倒置NoNoi<len ?numlen !=0YesYesnumi>'9' ?Nonumlen+='0'i+;numlen+1=0;Yes從第一位開始,若滿numi+1+=(numi-'0')/10;足條件,除10,將商numi=(numi-'0')%10+'0'進位,然后為該位模10,取得余數(shù)再次調(diào)用 Inversion(char *str) 倒置元素結(jié)束圖 2-4進位算法4計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告4int
10、 abdicate(char *num);/ 退位函數(shù), 引入數(shù)組,利用算法使得原先以ASCII 存儲的非0 9的元素以 0 9的字符存儲。該函數(shù)大體流程如圖2-5所示。退位算法求得引入的函數(shù)長度為lenNoLen>0?結(jié)束Yesnumi<'0' ?NoLen-;Yesnumlen+=10;numlen-1-從第一位開始,若滿足條件,加10,將前一位退位,然后為該位新值圖 2-5退位算法5int numclear(char * num);/ 清零函數(shù),引入數(shù)組,從第一位開始尋找,直到找到第一個不為 0的值為止,從該值開始向前推進,達(dá)到清零效果。該函數(shù)大體流程如圖2-
11、6所示。清零算法求得引入的函數(shù)長度為lenNo退出i<len?i+ ;YesNonumi='0'?i<len+1?從不是0 的那位開始賦值為第YesYes一位,依此類推,直至全部賦值完畢i+ ;numj+=numi+;圖 2-6清零算法5計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告6 int numadd(char *a,char *b,char * sum);/ 大數(shù)加法,引入兩個數(shù)組需要進行加法的數(shù)組以及用來存放其和的空數(shù)組。該函數(shù)大體流程如圖2-7所示。大數(shù)加法sumi=0;YesNoInversion(a); Inversion(b);strcat(sum,a+
12、i)ai!=0?將引用的a, b 數(shù)組倒置將余下的未進行運算判斷 a 且 b 的的部分賦給sum數(shù)組均不為空strcat(sum,b+i)Noai&&bi! =0?Yessumi=ai+bi-'0'Yes將 a,b 以及 sun 數(shù)組進行倒置將每一位的值相加并調(diào)用 carry(sum); 進行進位減去 0,以 ASCII 形式存儲起來結(jié)束i+;圖 2-7大數(shù)加法7 int numsm(char *a,char *b,char * mul);/ 大數(shù)乘法的主要運算函數(shù),引入兩個需要進行相乘的數(shù)組和一個用于存放其乘積的數(shù)組,通過 b中的第一位與 a中的每一位進行相乘
13、從而模擬乘法運算。該函數(shù)大體流程如圖2-8所示。大數(shù)相乘運算函數(shù)末尾補 0,進行進位定義 tempnMN 來暫時存儲相Yes乘 之 積 , 求 得 len=strlen(b);flag!=0?strcpy (tempn,mul);numadd(tempn,a,mul);flag=0; t=b0-'0'NoNocarry(mul);若是進行相乘的數(shù)是9,t=9?i=strlen(mul);將已經(jīng)相乘的數(shù)先存儲Yes起來,最后與 a 進行大Yes數(shù)相加t=8; flag=1;-len=!0 ?muli+='0'NoNoai!=0?muli+=0;Yes一一相乘,最后
14、加 0,muli=(ai-'0')*t+'0'i+以 ASCII 形式存儲結(jié)束圖 2-8大數(shù)乘法主要運算函數(shù)6計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告第三章使用說明31安裝手冊該計算機程序無需安裝,已由exe運行程序的形式導(dǎo)出,只需雙擊打開并運行即可。主界面有關(guān)于功能的提示,運行時也有相關(guān)的輸入提示和錯誤的提示,對界面的跳轉(zhuǎn)和返回也有相關(guān)選項說明,并且可以隨時暫停二級運算,回到主界面進行其他功能的選擇。32使用手冊打開名為計算器.exe的程序進入主界面/*計算器 */*請按照提示進行輸入數(shù)字*/1.進行加減乘除運算2.N次方運算3.階乘運算4.累加運算5.大數(shù)的
15、加減乘除6.退出主界面有 6個選項, 前四個為小數(shù)運算,第五個可進入大數(shù)運算的菜單,選項 6為退出程序。選擇選項 1,進行小數(shù)四則運算,若不是繼續(xù)運算,則會提示“請輸入四則運算表達(dá)式,并以 '#'結(jié)束”;若為繼續(xù)運算,則提示“請輸入四則運算表達(dá)式,用于繼續(xù)運算的值以''代替,并以 '#'結(jié)束”。按照提示輸入一串四則運算的表達(dá)式并以#結(jié)束,可直接輸出答案。選擇選項 2,進行 N次方運算,若不是繼續(xù)運算,則會提示“請輸入兩個數(shù),第一個為底數(shù),第二個為自變量”;若為繼續(xù)運算,則提示“請輸入自變量”,按照提示輸入一個或兩個數(shù)即可。若所求值會造成數(shù)據(jù)溢出,
16、則提示“所求N次方過大,溢出”。選擇選項 3,進行階乘運算,若不是繼續(xù)運算,則會提示“請輸入需要求階乘的數(shù)”;若是繼續(xù)運算,直接對該數(shù)進行程序運算。按提示進行操作,若所求值會造成數(shù)據(jù)溢出,則會提示“所求階乘數(shù)過大,溢出,請選擇其他功能進行操作”。選擇選項 4,進行累加運算,若不是繼續(xù)運算,則會提示“請輸入需要求累加的數(shù)”;若是繼續(xù)運算,直接對該數(shù)進行程序運算。按提示進行操作,若所求值會造成數(shù)據(jù)溢出,則會提示“所求累加數(shù)過大,溢出”。7計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告選擇選項 5,進入大數(shù)操作的菜單。選擇選項 6,退出該程序,若是無法退出。則會提示“請再次輸入 6來結(jié)束程序”,按照提示操
17、作即可退出程序。對小數(shù)操作的過程中,運行一次之后會跳出提示“是否進行繼續(xù)運算(y/n) ”,按照提示進行輸入。、若選擇y,將會跳轉(zhuǎn)到小數(shù)的二級菜單;若選擇n,退回到主菜單界面可選擇其他操作。/*請按照提示進行輸入數(shù)字*/1.進行加減乘除運算2.N次方運算3.階乘運算4.累加運算5.清零并返回該小數(shù)運算界面有六個選項,前四個選項均為繼續(xù)運算的操作,功能與上述相同,這里不在介紹,選項6為返回功能,若不想繼續(xù)運算,可選擇選項6,對原有數(shù)據(jù)進行清零,并返回主菜單。/*請按照提示進行輸入數(shù)字*/1.加法運算2.減法運算3.乘法運算4.除法運算5.返回菜單該界面為大數(shù)運算界面,在上述中已提到,該界面有五個
18、選項,前四個均為運算功能,實現(xiàn)大數(shù)的加減乘除,選項5可返回主菜單。8計算器麗水學(xué)院 C 語言課程設(shè)計總結(jié)報告第四章系統(tǒng)設(shè)計難點及其解決方法41 棧的四則運算為了使得關(guān)于小數(shù)的四則運算更加方便,因此選用了棧作為基本數(shù)據(jù)結(jié)構(gòu)來完成計算器功能,即可通過直接輸入一串表達(dá)式直接求出該運算的結(jié)果。 42 大數(shù)的加減乘除421 大數(shù)的加法為了使得算法更加簡潔易懂,簡化運算步驟, 方便運算, 之前須先定義一個數(shù)組倒置的函數(shù) Inversion() ,在加法運算中,講存放兩個大數(shù)的數(shù)組進行逆序存放,然后從第一位開始逐項相加減去0存放在 sum數(shù)組中, 。422 大數(shù)的減法調(diào)用 numcomp() 對讀入的兩個字符串進行對比,若是相等說明作差為0,直接輸出 0即可,若是前者大, 。423 大數(shù)的乘法大數(shù)乘法利用乘法法則,將短的字符串作為參考系,調(diào)用numsm() 與長的字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 污水課程設(shè)計紫外消毒
- 數(shù)字電路ic課程設(shè)計
- 教育培訓(xùn)行業(yè)教學(xué)方法培訓(xùn)體驗
- 電子課程設(shè)計網(wǎng)課答案
- 稅務(wù)工作總結(jié)制度建設(shè)與規(guī)范化監(jiān)督
- 急救護理工作總結(jié)
- 貸款經(jīng)理工作總結(jié)
- 電信通訊科技行業(yè)技術(shù)分析
- 旅游行業(yè)促銷活動總結(jié)
- 酒店用品銷售工作總結(jié)
- 遼海版六年級音樂上冊第8單元《3. 演唱 姐妹們上場院》教學(xué)設(shè)計
- 形勢任務(wù)教育宣講材料第一講——講上情
- 物業(yè)安全員考核實施細(xì)則
- 中國地質(zhì)大學(xué)(武漢)教育發(fā)展基金會籌備成立情況報告
- 第四章破產(chǎn)法(破產(chǎn)法)教學(xué)課件
- PE拖拉管施工方案標(biāo)準(zhǔn)版
- 7725i進樣閥說明書
- 鐵路建設(shè)項目施工企業(yè)信用評價辦法(鐵總建設(shè)〔2018〕124號)
- 時光科技主軸S系列伺服控制器說明書
- 無機非金屬材料專業(yè) 畢業(yè)設(shè)計論文 年產(chǎn)240萬平方米釉面地磚陶瓷工廠設(shè)計
- 社會組織績效考核管理辦法
評論
0/150
提交評論