簡易的計算器_第1頁
簡易的計算器_第2頁
簡易的計算器_第3頁
簡易的計算器_第4頁
簡易的計算器_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、JINGCHU UNIVERSIT Y OF TECHNOLOG Y簡單計算器設(shè)計學 院計算機工程學院專業(yè) XX年級班別 XX學號 XX學生姓名XX指導教師XX2015 年 6 月 25 日目錄1. 選題的意義 11.1 課題研究的背景 11.2 自己設(shè)計的優(yōu)勢 11.3 設(shè)計上功能上的不足 12. 研究的基礎(chǔ) 12.1 涉及的主要知識點 23. 研究的可行性 23.1 技術(shù)的可行性 24. 研究的具體部分 34.1 研究的主要流程圖 34.2 研究的具體代碼 44.3 程序運行結(jié)果圖表 11參考文獻 131. 選題的意義通過本項課程設(shè)計, 可以培養(yǎng)獨立思考、 綜合運用所學有關(guān)相應(yīng)知識的能力,

2、 能更好 的鞏固 C 語言程序設(shè)計課程學習的內(nèi)容,掌握工程軟件設(shè)計的基本方法,強化上機動手 編程能力, 闖過理論與實踐相結(jié)合的難關(guān)! 更加了解了 c 語言的好處和其可用性! 同時增加 了同學之間的團隊合作精神!更加也體會到以后在工作中團隊合作的重要性和必要性!通過 C 語言課程設(shè)計, 使我了解高級程序設(shè)計語言的結(jié)構(gòu), 掌握基本的程序設(shè)計過程 和技巧, 掌握基本的分析問題和利用計算機求解問題的能力, 具備初步的高級語言程序設(shè)計 能力。為后續(xù)各門計算機課程的學習和畢業(yè)設(shè)計打下堅實基礎(chǔ)。1.1 課題研究的背景計算器是現(xiàn)代日常生活中使用較為頻繁的工具之一, 常用的計算器有簡易版和科學計算 器兩種模式。

3、 簡易版的計算器不支持表達式運算, 每次只能輸入一個數(shù)據(jù)或者運算符來計算, 而科學計算器除了容納簡易版計算器的功能外, 還支持表達式運算, 用戶可以輸入一個合法 的算術(shù)表達式來得到所需的結(jié)果。 計算器對我們每一的學生都很熟悉, 從初中到高中再到大 學。但是我們只知道按下幾個按鈕計算器便會顯示出結(jié)果, 很少有學生分析過計算器究竟是 如何運行的。 C 語言課程設(shè)計便是一個很好的機會,讓我去親自寫計算器的運行代碼,盡管 是簡單計算器的設(shè)計,但其背后的知識那是相當多的,對我是個挑戰(zhàn),我接受!1.2 自己設(shè)計的優(yōu)勢現(xiàn)時學習生活中,常會遇到一些數(shù)目較大數(shù)據(jù)繁雜的數(shù)值運算,徒手運算起來很困難, 這時候我們就

4、必須用到計算器。 人們對計算的要求不斷提高, 普通的功能簡單的僅能進行加、 減、乘、除運算的計算工具已經(jīng)不能滿足需要,需要一種能進行多種計算。 現(xiàn)在已經(jīng)有一些 功能較為強大、 涵蓋面較廣的計算軟件, 而且各種平臺的小工具仍不斷出現(xiàn)。 這些大大方便 了我們的生活給我們更多的選擇和實現(xiàn)方式。本程序?qū)崿F(xiàn)了加、減、乘、除、求冪、求模, 求平方根,求Sin,求Cos,求LoglO,求階乘,取整,求正切,以及進制之間的相互轉(zhuǎn)換。 它可以直接輸入數(shù)學表達式,不需要任何轉(zhuǎn)換,就可以直接輸出。1.3 設(shè)計上功能上的不足本程序雖然在其他簡易計算器的基礎(chǔ)上新增加了很多類容,如:三角函數(shù)的求值、 指數(shù)函數(shù)的計算、任意

5、數(shù)的任意次方、進制之間的相互轉(zhuǎn)換等;但是由于個人能力的限制,仍不能實現(xiàn)四則混合運算的功能, 僅僅是能進行一個兩個數(shù)或者一個數(shù)的計算, 這是這個程序最 為不足的地方。但是我相信,隨著學習的不斷深入,這個功能在不久以后會被很好的實現(xiàn)。2. 研究的基礎(chǔ)C語言是一種結(jié)構(gòu)化的程序設(shè)計語言。它功能豐富、表現(xiàn)力強、使用靈活、應(yīng)用面廣、 目標程序效率高、可移植性好, 既具有高級語言的特點, 有具有低級語言的功能, 以此它成 為當今的主流程序設(shè)計語言之一。2.1 涉及的主要知識點本程序的知識點主要來源于任正云版的 C 語言程序設(shè)計(第二版) , 其中包含了 C 語言的數(shù)據(jù)類型與基本操作、 順序結(jié)構(gòu)設(shè)計、 選擇結(jié)

6、構(gòu)程序設(shè)計、 循環(huán)結(jié)構(gòu)程序設(shè)計、 函數(shù)、 數(shù)組、指針等。本程序通過不同類型數(shù)據(jù)間的轉(zhuǎn)換實現(xiàn)了部分進制間的轉(zhuǎn)換, 如十進制轉(zhuǎn)換為八、 十六 中 printf(%on,a); printf(%xn,a); 直接把輸入的十進制數(shù)轉(zhuǎn)換成了八和十六進制。 對于控制程序進行什么樣的計算方面, 采用了輸入的方法, 根據(jù)提示的信息, 輸入不同的選 項,可以實現(xiàn)不同的運算。在選擇結(jié)構(gòu)程序設(shè)計方面,采用 if 語句來判斷如在二級制數(shù)和 十進制數(shù)的相互轉(zhuǎn)換的過程中用 if else 語句對數(shù)的正負進行判斷,為其分情況研究提供 幫助;又如在一般二次方程的求解上運用 if else if elseif else 語句對

7、方程解的四 種情況,即無解、兩個相同實數(shù)根、兩個不同實數(shù)根、和兩個虛數(shù)根分別進行計算,以求出 不同情況的解。本程序大量運用 switch case 語句;以實現(xiàn)本程序的不同功能。如圖(1):這里運用switch 語句,來選擇你所以運用到的這個程序的不同的功能,這里共有六個,根據(jù)你要使 用的功能,可以相應(yīng)的輸入數(shù)據(jù),來實現(xiàn)自己所需要的的計算。又如圖 (2)對于加減乘除的簡單的四則混合運算也是運用的switch 語句來實現(xiàn)的; 通過 switch 來實現(xiàn)加減乘除的多級運算,而不是簡單的兩個數(shù)相加減,但是由于沒有判斷優(yōu) 先級的語句,所以此程序不能進行優(yōu)先級的計算,只能從左到右的依次計算!本程序的循環(huán)

8、結(jié)構(gòu)用的是 while 和 for 。對于需要逐級進行的表達式,就用了這些循環(huán)語句在 xAy 的 for(i=1;i=0;j-)printf(%d,bj);,求最值并排序的輸入過程、排序過程、輸出過程等過程中都運用有這些語句! 之所以運用循環(huán), 是由于要實現(xiàn)其功能, 都要按照一定的條件重復(fù)執(zhí)行同樣的一 段語句,所以運用循環(huán)語句來做到多次重復(fù)。本程序采用的是函數(shù)調(diào)用的方法, 該程序運用了 6 個自己聲明的函數(shù), 通過這些函數(shù)來 在一個程序上實現(xiàn)多種不同的功能void displaymain();void YBys(); voidTSys(); void PSys(); void jzzh1();

9、 void jzzh2();void qfcz();這些就是就是笨晨曦的函數(shù)聲明的部分內(nèi)容。關(guān)于數(shù)組方面, 對于進制的處理方面就用的是數(shù)組, 把每個數(shù)字分別儲存在一個空間里, 這樣就可以更方便的對數(shù)的每一個位進行操作。 而不用分別去求每一位的數(shù)值, 正是基于這 個原因,本程序可以對多達 80 位的數(shù)來進行轉(zhuǎn)換。突破了只能對同一位數(shù)求解的限制。3. 研究的可行性3.1 技術(shù)的可行性本程序是用C語言編寫的一部功能相對全面的簡易計算器,它通過程序,可以幫助我們解決一些復(fù)雜的運算。其所運用的知識點也全部是C語言程序設(shè)計(第二版)上的知識。對于一些不能解決的問題, 都可以在百度上找到根據(jù)。 通過一個學期

10、的學習, 我認為要學號 C語言程序這門課程,不僅要認真閱讀課本知識,更重要的是要通過上機實踐來鞏固我們的 知識, 特別是學計算機專業(yè)的, 我們更應(yīng)該注重這一環(huán)節(jié), 只有這樣我們才能成為一個合格 的計算機人才。通過這一個課程設(shè)計,進一步來鞏固所學的語句,如:循環(huán),和分支結(jié)構(gòu)的課本上的東加深對課程化提高程序開發(fā)運用。還要熟悉四則運算和函數(shù)的算法。通過這次課程設(shè)計擴展自己的知識面,西是遠遠不夠的,可以通過上網(wǎng)或去圖書館查資料等方式得到一些新的知識, 設(shè)計思想的理解,能進行一個系統(tǒng)功能分析,并設(shè)計一個合理的模塊化結(jié)構(gòu),能力。4.研究的具體部分4.1 研究的主要流程圖開始輸入數(shù)字(1-7),選擇服務(wù)項目

11、*輸入數(shù)字N(1-7) ?Y計算器運算輸出計算結(jié)果結(jié)束4.2 研究的具體代碼/* 主函數(shù) */ #includestdio.h #includemath.h #define N 80 #include stdlib.h #includestring.h void main() int choice,flag=0; void displaymain(); void YBys(); void TSys(); void PSys(); void jzzh1(); void jzzh2(); void qfcz(); while(flag=0) displaymain(); printf(please

12、 input a digital(1-7)n); scanf(%d,&choice); if(choice=1&choice=1&a=9) switch(a) case 1:printf(atan(x)=%f,atan(x);break; case 2:printf(acos(x)=%f,acos(x);break;case 3:printf(asin(x)=%f,asin(x);break;case 4:printf(sin(x)=%f,sin(x);break;case 5:printf(cos(x)=%f,cos(x);break;case 6:printf(tan(x)=%f,tan(

13、x);break;case 7:printf(log(x)=%f,log(x);break;case 8:pri ntf(V (x)=%f,sqrt(x);break;case 9:float c=1;printf(請再輸入一個個數(shù) n);scanf(%d,&b);for(i=1;i=b;i+)c=c*x;prin tf(x)A(x)=%fn,c);break;elseprintf(your inputs is error!n);void PSys()/* 找出最大值和最小值的函數(shù) */float aN,temp;int i,j,k,n;printf( 請輸入要比較數(shù)的個數(shù) n); scanf

14、(%f,&n);printf(請輸入 嫩,n);for(i=0;in;i+)scanf(%f,&ai);for(i=0;in;i+)printf(%fn,ai);printf(nn);for(k=0;kn-1;k+)for(j=1;jaj) temp=aj-1; aj-1=aj; aj=temp;for(i=0;i0) while(a!=0) t=a%2;bi=t; i+;a=a/2; /*正整數(shù)十進制轉(zhuǎn)化二進制 */ for(j=i-1;j=0;j-) printf(%d,bj);printf(n);else while(a!=0) a=labs(a);a=255-a;t=a%2;bi=t;

15、 i+;a=a/2; /* 負整數(shù)十進制轉(zhuǎn)化二進制 */ for(j=i-1;j=0;j-) printf(%d,bj);break; printf(n);break;case 2:printf(%on,a);break;case 3:printf(%xn,a);break;void jzzh2()/*N 進制數(shù)轉(zhuǎn)化成十進制數(shù)的函數(shù) */long t1;int i,n,t,t3;char aN;printf( 請輸入一串數(shù)字 :n); scanf(%s,a); strupr(a);t3=strlen(a);t1=0; printf(please input n(2or8or16):n); sc

16、anf(%d,&n);for(i=0;i=n&ai=n)printf(data error!);if(ai=0&ai=11&(ai=A&ai=A+n-10) t=ai-A+10;t1=t1*n+t;printf(the decimal is %ldn,t1);void qfcz()/* 求解二元一次方程組函數(shù) */float a,b,c,disc,x1,x2,realpart,imagpart;printf( 請依次輸入一般二次方程的系數(shù) a,b,cn); scanf(%f,%f,%f,&a,&b,&c); if(fabs(a)=1e-6&fabs(b)=1e-6) printf( 方程無解!

17、 n);else if(fabs(a)1e-6)printf( 方程有單根是 %8.4fn,-c/b);elsedisc=b*b-4*a*c;if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf( 方程有兩個實數(shù)根 !n);printf(x1=%8.4f,x1);printf(x2=%8.4f,x2);elserealpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf( 方程有兩個虛根! n);printf(x1=%8.4f+%8.4fin,realpart,

18、imagpart);printf(x2=%8.4f-%8.4fin,realpart,imagpart);4.3程序運行結(jié)果圖表島訂年弋一uni Cm .陶 in* cos CkJ l.IdsCk? ChJ CjcJStudv IftrHConwIeAppkartHjfilDrfeiugNCoriB. innri 曰 digltJsKl*C:L Leri Jsrvc ,細口urrwnls Visual $-ludl = 2s &sleAplit*iCtbu - Con.-円蓄比H掛的1 覃 hZ-cdsCm)LJ-* inf h4 v irtcw5lFl5!fK右=wuE - J J Q GtT 3-r存抵宇已茶Bii.扎裁臨呻14ka.WMuiuya bhhww24.HHHk1Lii9i2.eaiaQn q Afliaa cu Ji J

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論