C語(yǔ)言簡(jiǎn)單計(jì)算器的編寫(xiě)課程設(shè)計(jì)_第1頁(yè)
C語(yǔ)言簡(jiǎn)單計(jì)算器的編寫(xiě)課程設(shè)計(jì)_第2頁(yè)
C語(yǔ)言簡(jiǎn)單計(jì)算器的編寫(xiě)課程設(shè)計(jì)_第3頁(yè)
C語(yǔ)言簡(jiǎn)單計(jì)算器的編寫(xiě)課程設(shè)計(jì)_第4頁(yè)
C語(yǔ)言簡(jiǎn)單計(jì)算器的編寫(xiě)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、學(xué)號(hào)2013-2014 學(xué)年 第二學(xué)期高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告題 目 : 簡(jiǎn)單計(jì)算器專(zhuān) 業(yè) : 數(shù)字媒體技術(shù)班 級(jí) : 13 級(jí) 1 班姓 名 : 邢洪波指導(dǎo)教師 : 王輝成績(jī):計(jì)算機(jī)與信息工程系二 0 一四年二月二十日1 設(shè)計(jì)內(nèi)容及要求利用本學(xué)期所學(xué)的 C語(yǔ)言程序設(shè)計(jì)課程,運(yùn)用相關(guān)知識(shí),查閱相 關(guān)資料,編寫(xiě) C語(yǔ)言程序, 設(shè)計(jì)一個(gè)簡(jiǎn)單計(jì)算器, 要求編寫(xiě)的簡(jiǎn)單計(jì)算器 能夠模擬 windows系統(tǒng)的計(jì)算器, 用戶能夠用鍵盤(pán)輸入相關(guān)數(shù)據(jù), 能夠進(jìn) 行簡(jiǎn)單的加、減、乘、除運(yùn)算,并且在程序運(yùn)行過(guò)程中能夠正常的退出程 序。?在計(jì)算器程序運(yùn)行中,輸入數(shù)據(jù)時(shí)如果遇到輸入錯(cuò)誤的情況,能夠能過(guò)鍵盤(pán)上的退格鍵

2、進(jìn)行刪除, 并且重新輸入正確的數(shù)據(jù)。 在數(shù)據(jù)輸入完成后,如果需要放棄本次計(jì)算操作, 可以利用程序中設(shè)置好的按鍵進(jìn)行清零, 并為下一次運(yùn)算作準(zhǔn)備。運(yùn)用相關(guān)知識(shí),查閱相關(guān)資料,編寫(xiě)一個(gè)簡(jiǎn)單的計(jì)算器,能夠?qū)崿F(xiàn)簡(jiǎn)單的基本的加減乘除運(yùn)算,在計(jì)算器工作時(shí)用戶能利用鍵盤(pán)或鼠標(biāo)進(jìn)行相應(yīng)操作。程序基本功能要求實(shí)現(xiàn)完整,并有簡(jiǎn)單的驗(yàn)證。程序還須有符合標(biāo)準(zhǔn)的程序設(shè)計(jì)報(bào)告。2 概要設(shè)計(jì) 系統(tǒng)流程圖系統(tǒng)流程圖主要功能表主要功能表序號(hào)文件名主要功能備注1+加法兩個(gè)操作數(shù)2減法兩個(gè)操作數(shù)3*乘法兩個(gè)操作數(shù)4/除法兩個(gè)操作數(shù)5#開(kāi)方一個(gè)操作數(shù)定義定義定義6乘方兩個(gè)操作數(shù)7Enter等于8Tab清零9q退出3 設(shè)計(jì)過(guò)程或程序代

3、碼#include<>#include<>#include<> /*malloc 的頭文件代表在內(nèi)存中開(kā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 語(yǔ)句 */if(ai>='0'&&ai<='9')/* 內(nèi)循環(huán)使用 if-else 語(yǔ)句 */z=0;j=i+1;while(aj>='0'&&aj<='9') /*內(nèi)

5、循環(huán)使用各種循環(huán)語(yǔ)句的嵌套 */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)語(yǔ)句的嵌套 */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='+')/* 對(duì)加法的定義 */*while(t2>0&&zhan2t2!='

7、(') 定義當(dāng)加號(hào)和括號(hào)同時(shí)出現(xiàn)時(shí) */nibo+t1=zhan2t2;/* 將 zhan2t2 賦給 nibo+t2*/ nibot1+1='0't2-;zhan2+t2=ai;i+;else if(ai='-')/* 對(duì)減法的定義 */if(ai-1='$')a0='0'i=0;else if(ai-1='(')ai-1='0'ai-2='('i=i-2;t2-;else對(duì)括號(hào)的定對(duì)乘法和除 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;對(duì)乘對(duì)乘方的else if(niboj='+') /* 對(duì)加法的定義 */zhan3t3-1=zhan3t3-1+zhan3t3;t3-;else if(niboj='-')/* 對(duì)減法的定義 */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='#') /* 對(duì)開(kāi)方的定義 */zhan3t3=sqrt(zhan3t3);j+;return zhan3t3;/* 返回值 */void main()f

12、or(;)char x,a50;double jieguo;int i=0;a0='$'printf("# 表示開(kāi)方, 表示乘方 ( 支持負(fù)數(shù) )n");/* 對(duì)乘方和開(kāi)方的定義 */printf(" 請(qǐng)輸入表達(dá)式無(wú)需輸入 = 號(hào) 直接回車(chē)可輸出答案 退出請(qǐng)輸入 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ǐng)輸入 q 繼續(xù)請(qǐng)直接輸入 nn");4 設(shè)計(jì)結(jié)果與分析系統(tǒng)測(cè)試結(jié)果如下:根據(jù)電腦所給的提示出現(xiàn)語(yǔ)法錯(cuò)誤,缺少變量的定義大多的語(yǔ)法錯(cuò)誤在通過(guò)書(shū)本參 考下能夠修改。主要是平時(shí)看書(shū)不仔細(xì)、不太注意而產(chǎn)生的,如沒(méi)有注意具體數(shù)據(jù)使用 是有一定的范圍限定;過(guò)分重視分號(hào)的重要性而在 for 、if 、while 語(yǔ)句中畫(huà)蛇

14、添足加分 號(hào);在使用文件的時(shí)候忘記將文件先打開(kāi),對(duì)打開(kāi)的方式與使用的情況不太注意而造成 不匹配;還有漏掉形參的定義是值不能傳遞等等。這些語(yǔ)法錯(cuò)誤有信息框的提示一般是 能夠排除的。另外還有部分注釋的位置也錯(cuò)了,最重要的是邏輯上的錯(cuò)誤,一般電腦不 容易發(fā)現(xiàn)。所以更對(duì)程序仔細(xì)的檢查。經(jīng)認(rèn)真修改之后重新保存文件。 錯(cuò)誤原因分析一缺少變量定義,定義位置不正確 由于該程序相對(duì)來(lái)講稍有些長(zhǎng),前后有些變量不容易聯(lián)系起來(lái),但是在錯(cuò)誤信息的 提示下一般還是很容易找到,不過(guò)需要注意的是在定義的時(shí)候有些函數(shù)使用同樣的變量 名而表示不同的作用,因而使用要很小心,定義及定義的位置特別留意。為減少這樣的 錯(cuò)誤我后來(lái)還是用不

15、同的變來(lái)名來(lái)表示,結(jié)果引起的那些錯(cuò)誤解決了。語(yǔ)法錯(cuò)誤大多的語(yǔ)法錯(cuò)誤在通過(guò)書(shū)本參考下能夠修改。主要是平時(shí)缺乏鍛煉、不太注意而產(chǎn) 生的。如沒(méi)有注意具體數(shù)據(jù)使用是有一定的范圍限定;過(guò)分重視分號(hào)的重要性而在 for 、 if 、while 語(yǔ)句中畫(huà)蛇添足加分號(hào)。錯(cuò)誤原因分析二注釋的位置 程序設(shè)計(jì)中在注釋的時(shí)候不能同我們平常寫(xiě)字一樣隨心所欲,我們應(yīng)該注意注釋的 格式。注釋中不能含有 C語(yǔ)言可執(zhí)行的語(yǔ)句。邏輯錯(cuò)誤 編譯、連接的成功并不意味著程序的最終成功,邏輯上的錯(cuò)誤機(jī)器不易檢查出來(lái),這時(shí) 需要多數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯(cuò)誤的查找是最難的,需要有相當(dāng)?shù)哪托暮图?xì)心去把問(wèn) 題找出來(lái),這也是本次程序編輯過(guò)程中碰到

16、的最大的難題。往往運(yùn)行之后得不到令人滿 意的結(jié)果。此時(shí)解決的方法一則用“分段檢查”的方法,在程序的不同位置設(shè)幾個(gè) printf 函數(shù)語(yǔ)句,輸出有關(guān)變量的值,逐段往下檢查,對(duì)檢查出的錯(cuò)誤進(jìn)行修改,當(dāng)調(diào) 試完畢將設(shè)置的 printf 都刪去,若在程序中找不到問(wèn)題,則再來(lái)考慮算法是否邏輯嚴(yán) 謹(jǐn),再進(jìn)行修改,如此循環(huán)往復(fù),直到最后程序運(yùn)行成功。在本次程序編輯過(guò)程中,我 就是這樣處理這個(gè)問(wèn)題的。所以到最后我找到了錯(cuò)誤,及時(shí)改正,終于把程序完成了, 一切功能顯示正常。5 小結(jié)用 C 語(yǔ)言來(lái)編程的技巧,以及對(duì) C也有了更加深刻的認(rèn)識(shí)。 通過(guò)這次兩個(gè)星期左右的 C語(yǔ)言程序課程設(shè)計(jì)實(shí)習(xí),我覺(jué)得我學(xué)到了很多,以前在課堂 上學(xué)的東西以為都是一些枯燥無(wú)味的東西,直到進(jìn)行了這次課程設(shè)計(jì)后我才真正的明白 了什么叫做“書(shū)到用時(shí)方恨少”,深深地感到自己 C語(yǔ)言知道的缺乏,感到

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論