下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué)號2013-2014 學(xué)年 第二學(xué)期高級語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告題 目 : 簡單計(jì)算器專 業(yè) : 數(shù)字媒體技術(shù)班 級 : 13 級 1 班姓 名 : 邢洪波指導(dǎo)教師 : 王輝成績:計(jì)算機(jī)與信息工程系二 0 一四年二月二十日1 設(shè)計(jì)內(nèi)容及要求利用本學(xué)期所學(xué)的 C語言程序設(shè)計(jì)課程,運(yùn)用相關(guān)知識(shí),查閱相 關(guān)資料,編寫 C語言程序, 設(shè)計(jì)一個(gè)簡單計(jì)算器, 要求編寫的簡單計(jì)算器 能夠模擬 windows系統(tǒng)的計(jì)算器, 用戶能夠用鍵盤輸入相關(guān)數(shù)據(jù), 能夠進(jìn) 行簡單的加、減、乘、除運(yùn)算,并且在程序運(yùn)行過程中能夠正常的退出程 序。?在計(jì)算器程序運(yùn)行中,輸入數(shù)據(jù)時(shí)如果遇到輸入錯(cuò)誤的情況,能夠能過鍵盤上的退格鍵
2、進(jìn)行刪除, 并且重新輸入正確的數(shù)據(jù)。 在數(shù)據(jù)輸入完成后,如果需要放棄本次計(jì)算操作, 可以利用程序中設(shè)置好的按鍵進(jìn)行清零, 并為下一次運(yùn)算作準(zhǔn)備。運(yùn)用相關(guān)知識(shí),查閱相關(guān)資料,編寫一個(gè)簡單的計(jì)算器,能夠?qū)崿F(xiàn)簡單的基本的加減乘除運(yùn)算,在計(jì)算器工作時(shí)用戶能利用鍵盤或鼠標(biāo)進(jìn)行相應(yīng)操作。程序基本功能要求實(shí)現(xiàn)完整,并有簡單的驗(yàn)證。程序還須有符合標(biāo)準(zhǔn)的程序設(shè)計(jì)報(bào)告。2 概要設(shè)計(jì) 系統(tǒng)流程圖系統(tǒng)流程圖主要功能表主要功能表序號文件名主要功能備注1+加法兩個(gè)操作數(shù)2減法兩個(gè)操作數(shù)3*乘法兩個(gè)操作數(shù)4/除法兩個(gè)操作數(shù)5#開方一個(gè)操作數(shù)定義定義定義6乘方兩個(gè)操作數(shù)7Enter等于8Tab清零9q退出3 設(shè)計(jì)過程或程序代
3、碼#include<>#include<>#include<> /*malloc 的頭文件代表在內(nèi)存中開辟存儲(chǔ)空間 */ double jisuan(char a)int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; /* 整型變量 i,j,k,m,n,cnt,t1,t2,t3*/char nibo50,zhan250;/* 定義字符型數(shù)組 */double x,n,l,z=0,zhan350; /* 雙精度變量 x,n,l,z,zhan350*/typedef struct /* 表示可以用 con 定義結(jié)構(gòu)體變量 */double d1
4、;int d2;dd;typedef structdd data50;int top;zhan1;zhan1 *shu; /* 指針變量 */shu=(zhan1 *)malloc(sizeof(zhan1);shu->top=0;while(ai!='0')/* 外循環(huán)是用 while 語句 */if(ai>='0'&&ai<='9')/* 內(nèi)循環(huán)使用 if-else 語句 */z=0;j=i+1;while(aj>='0'&&aj<='9') /*內(nèi)
5、循環(huán)使用各種循環(huán)語句的嵌套 */j+;j-;for(k=i;k<=j;k+)z=z*10+ak-'0'j=j+1;x=z;if(aj='.')l=1;i=j+1;j=i+1;while(aj>='0'&&aj<='9')/* 內(nèi)循環(huán)使用各種循環(huán)語句的嵌套 */j+;j-;for(k=i;k<=j;k+)n=pow,l);l=l+1;x=x+n*(ak-'0');i=j+1;else i=j;shu->data+shu->top.d1=x;shu->datas
6、hu->top.d2=+cnt;nibo+t1='0'+shu->datashu->top.d2;nibot1+1='0'else if(ai='(')zhan2+t2=ai;i+;else if(ai=')')j=t2;while(zhan2j!='(')nibo+t1=zhan2j; nibot1+1='0'j-;t2=j-1;i+;else if(ai='+')/* 對加法的定義 */*while(t2>0&&zhan2t2!='
7、(') 定義當(dāng)加號和括號同時(shí)出現(xiàn)時(shí) */nibo+t1=zhan2t2;/* 將 zhan2t2 賦給 nibo+t2*/ nibot1+1='0't2-;zhan2+t2=ai;i+;else if(ai='-')/* 對減法的定義 */if(ai-1='$')a0='0'i=0;else if(ai-1='(')ai-1='0'ai-2='('i=i-2;t2-;else對括號的定對乘法和除 while(t2>0&&zhan2t2!='(
8、39;) /* 義*/ nibo+t1=zhan2t2; nibot1+1='0't2-;zhan2+t2=ai;i+;else if(ai='*'|ai='/') /* 法的定義 */while(zhan2t2='*'|zhan2t2='/'|zhan2t2=''|zhan2t2='#') /* 邏輯運(yùn)算 */nibo+t1=zhan2t2; nibot1+1='0't2-;zhan2+t2=ai;i+;else if(ai=''|ai='#
9、') /*while(zhan2t2=''|zhan2t2='#') nibo+t1=zhan2t2;nibot1+1='0't2-;zhan2+t2=ai;i+;while(t2>0)nibo+t1=zhan2t2;/*nibo+t1*/nibot1+1='0'/*分程序的運(yùn)算 */t2-;j=1;t3=0;while(j<=t1) if(niboj>='0'&&niboj!=''&&niboj!='#')for(i=1;i
10、<=shu->top;i+)if(int)(niboj-'0')=shu->datai.d2)m=i;break;邏輯運(yùn)算中的或運(yùn)算 */將的 zhan2t2 值賦給碰到 '0' 結(jié)束部zhan3+t3=shu->datam.d1;對乘對乘方的else if(niboj='+') /* 對加法的定義 */zhan3t3-1=zhan3t3-1+zhan3t3;t3-;else if(niboj='-')/* 對減法的定義 */zhan3t3-1=zhan3t3-1-zhan3t3;t3-;else if(n
11、iboj='*') /* 法的定義 */zhan3t3-1=zhan3t3-1*zhan3t3;t3-;else if(niboj='/') /* 除法的定義 */zhan3t3-1=zhan3t3-1/zhan3t3;t3-;else if(niboj='') /* 定義*/zhan3t3-1=pow(zhan3t3-1,zhan3t3);t3-;else if(niboj='#') /* 對開方的定義 */zhan3t3=sqrt(zhan3t3);j+;return zhan3t3;/* 返回值 */void main()f
12、or(;)char x,a50;double jieguo;int i=0;a0='$'printf("# 表示開方, 表示乘方 ( 支持負(fù)數(shù) )n");/* 對乘方和開方的定義 */printf(" 請輸入表達(dá)式無需輸入 = 號 直接回車可輸出答案 退出請輸入 q nn");scanf("%c",&x);if(x='q') break;while(x!='n') /* 碰 到 '0' 結(jié)束部分程序的運(yùn)算 */a+i=x;scanf("%c",
13、&x);ai+1='0'jieguo=jisuan(a);printf("n");printf("結(jié)果為 :%lf",jieguo);printf("nnn");printf(" 退出請輸入 q 繼續(xù)請直接輸入 nn");4 設(shè)計(jì)結(jié)果與分析系統(tǒng)測試結(jié)果如下:根據(jù)電腦所給的提示出現(xiàn)語法錯(cuò)誤,缺少變量的定義大多的語法錯(cuò)誤在通過書本參 考下能夠修改。主要是平時(shí)看書不仔細(xì)、不太注意而產(chǎn)生的,如沒有注意具體數(shù)據(jù)使用 是有一定的范圍限定;過分重視分號的重要性而在 for 、if 、while 語句中畫蛇
14、添足加分 號;在使用文件的時(shí)候忘記將文件先打開,對打開的方式與使用的情況不太注意而造成 不匹配;還有漏掉形參的定義是值不能傳遞等等。這些語法錯(cuò)誤有信息框的提示一般是 能夠排除的。另外還有部分注釋的位置也錯(cuò)了,最重要的是邏輯上的錯(cuò)誤,一般電腦不 容易發(fā)現(xiàn)。所以更對程序仔細(xì)的檢查。經(jīng)認(rèn)真修改之后重新保存文件。 錯(cuò)誤原因分析一缺少變量定義,定義位置不正確 由于該程序相對來講稍有些長,前后有些變量不容易聯(lián)系起來,但是在錯(cuò)誤信息的 提示下一般還是很容易找到,不過需要注意的是在定義的時(shí)候有些函數(shù)使用同樣的變量 名而表示不同的作用,因而使用要很小心,定義及定義的位置特別留意。為減少這樣的 錯(cuò)誤我后來還是用不
15、同的變來名來表示,結(jié)果引起的那些錯(cuò)誤解決了。語法錯(cuò)誤大多的語法錯(cuò)誤在通過書本參考下能夠修改。主要是平時(shí)缺乏鍛煉、不太注意而產(chǎn) 生的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定;過分重視分號的重要性而在 for 、 if 、while 語句中畫蛇添足加分號。錯(cuò)誤原因分析二注釋的位置 程序設(shè)計(jì)中在注釋的時(shí)候不能同我們平常寫字一樣隨心所欲,我們應(yīng)該注意注釋的 格式。注釋中不能含有 C語言可執(zhí)行的語句。邏輯錯(cuò)誤 編譯、連接的成功并不意味著程序的最終成功,邏輯上的錯(cuò)誤機(jī)器不易檢查出來,這時(shí) 需要多數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯(cuò)誤的查找是最難的,需要有相當(dāng)?shù)哪托暮图?xì)心去把問 題找出來,這也是本次程序編輯過程中碰到
16、的最大的難題。往往運(yùn)行之后得不到令人滿 意的結(jié)果。此時(shí)解決的方法一則用“分段檢查”的方法,在程序的不同位置設(shè)幾個(gè) printf 函數(shù)語句,輸出有關(guān)變量的值,逐段往下檢查,對檢查出的錯(cuò)誤進(jìn)行修改,當(dāng)調(diào) 試完畢將設(shè)置的 printf 都刪去,若在程序中找不到問題,則再來考慮算法是否邏輯嚴(yán) 謹(jǐn),再進(jìn)行修改,如此循環(huán)往復(fù),直到最后程序運(yùn)行成功。在本次程序編輯過程中,我 就是這樣處理這個(gè)問題的。所以到最后我找到了錯(cuò)誤,及時(shí)改正,終于把程序完成了, 一切功能顯示正常。5 小結(jié)用 C 語言來編程的技巧,以及對 C也有了更加深刻的認(rèn)識(shí)。 通過這次兩個(gè)星期左右的 C語言程序課程設(shè)計(jì)實(shí)習(xí),我覺得我學(xué)到了很多,以前在課堂 上學(xué)的東西以為都是一些枯燥無味的東西,直到進(jìn)行了這次課程設(shè)計(jì)后我才真正的明白 了什么叫做“書到用時(shí)方恨少”,深深地感到自己 C語言知道的缺乏,感到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版七年級數(shù)學(xué)上冊4.3.2《角的比較與運(yùn)算》聽評課記錄
- 生化儀器維修合同(2篇)
- 湘教版數(shù)學(xué)九年級上冊5.1《總體平均數(shù)與方差的估計(jì)》聽評課記錄1
- 人教版英語七年級下冊知識(shí)點(diǎn)
- 人教版數(shù)學(xué)九年級下冊29.2《三視圖》聽評課記錄(二)
- 浙教版數(shù)學(xué)七年級上冊《6.6 角的大小比較》聽評課記錄1
- 小學(xué)二年級數(shù)學(xué)口算心算題天天練75套
- 五年級數(shù)學(xué)下冊聽評課記錄《4.1 體積與容積 》北師大版
- 蘇科版數(shù)學(xué)九年級上冊1.4《用一元二次方程解決問題》聽評課記錄4
- 湘教版地理七年級下冊6.3《美洲》第2課時(shí)聽課評課記錄
- 藥膳與食療試題及答案高中
- 二零二五年度海外市場拓展合作協(xié)議4篇
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- 2025中國鐵塔集團(tuán)安徽分公司招聘29人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年河北省農(nóng)村信用社招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 手術(shù)室植入物的管理
- 電力供電系統(tǒng)試驗(yàn)調(diào)試和聯(lián)調(diào)方法
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評價(jià)導(dǎo)則
- 法語工程詞匯(路橋、隧道、房建)
- 地推管理制度(完整版)
- NUDD新獨(dú)難異失效模式預(yù)防檢查表
評論
0/150
提交評論