c語(yǔ)言課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第1頁(yè)
c語(yǔ)言課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第2頁(yè)
c語(yǔ)言課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第3頁(yè)
c語(yǔ)言課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第4頁(yè)
c語(yǔ)言課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言課程設(shè)計(jì)學(xué)院:地球物理與測(cè)控技術(shù)學(xué)院專(zhuān)業(yè):測(cè)控技術(shù)與儀器姓名:鄔博文學(xué)號(hào):201620120202目錄第一章 選題的意義31.1 課題研究的背景31.2 自己設(shè)計(jì)的優(yōu)勢(shì)31.3 設(shè)計(jì)上功能上的不足3第二章 研究的基礎(chǔ)42.1 涉及的主要知識(shí)點(diǎn)4第三章 研究的可行性53.1 技術(shù)的可行性53.2 經(jīng)濟(jì)效益和社會(huì)效益的可行性5第四章 研究的具體部分64.1 研究的主要流程圖64.2 研究的具體代碼74.3程序運(yùn)行結(jié)果圖表13第五章 總結(jié)16第一章 選題的意義通過(guò)本項(xiàng)課程設(shè)計(jì),可以培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,能更好的鞏固C語(yǔ)言程序設(shè)計(jì)課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法

2、,強(qiáng)化上機(jī)動(dòng)手編程能力,闖過(guò)理論與實(shí)踐相結(jié)合的難關(guān)!更加了解了c語(yǔ)言的好處和其可用性!同時(shí)增加了同學(xué)之間的團(tuán)隊(duì)合作精神!更加也體會(huì)到以后在工作中團(tuán)隊(duì)合作的重要性和必要性!通過(guò)C語(yǔ)言課程設(shè)計(jì),使學(xué)生了解高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu),掌握基本的程序設(shè)計(jì)過(guò)程和技巧,掌握基本的分析問(wèn)題和利用計(jì)算機(jī)求解問(wèn)題的能力,具備初步的高級(jí)語(yǔ)言程序設(shè)計(jì)能力。為后續(xù)各門(mén)計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)。1.1 課題研究的背景計(jì)算器是現(xiàn)代日常生活中使用較為頻繁的工具之一,常用的計(jì)算器有簡(jiǎn)易版和科學(xué)計(jì)算器兩種模式。簡(jiǎn)易版的計(jì)算器不支持表達(dá)式運(yùn)算,每次只能輸入一個(gè)數(shù)據(jù)或者運(yùn)算符來(lái)計(jì)算,而科學(xué)計(jì)算器除了容納簡(jiǎn)易版計(jì)算器的功能

3、外,還支持表達(dá)式運(yùn)算,用戶(hù)可以輸入一個(gè)合法的算術(shù)表達(dá)式來(lái)得到所需的結(jié)果。計(jì)算器對(duì)我們每一的學(xué)生都很熟悉,從初中到高中再到大學(xué)。但是我們只知道按下幾個(gè)按鈕計(jì)算器便會(huì)顯示出結(jié)果,很少有學(xué)生分析過(guò)計(jì)算器究竟是如何運(yùn)行的。C語(yǔ)言課程設(shè)計(jì)便是一個(gè)很好的機(jī)會(huì),讓我去親自寫(xiě)計(jì)算器的運(yùn)行代碼,盡管是簡(jiǎn)單計(jì)算器的設(shè)計(jì),但其背后的知識(shí)那是相當(dāng)多的,對(duì)我是個(gè)挑戰(zhàn),我接受!1.2 自己設(shè)計(jì)的優(yōu)勢(shì)現(xiàn)時(shí)學(xué)習(xí)生活中,常會(huì)遇到一些數(shù)目較大數(shù)據(jù)繁雜的數(shù)值運(yùn)算,徒手運(yùn)算起來(lái)很困難,這時(shí)候我們就必須用到計(jì)算器。人們對(duì)計(jì)算的要求不斷提高,普通的功能簡(jiǎn)單的僅能進(jìn)行加、減、乘、除運(yùn)算的計(jì)算工具已經(jīng)不能滿(mǎn)足需要,需要一種能進(jìn)行多種計(jì)算?,F(xiàn)

4、在已經(jīng)有一些功能較為強(qiáng)大、涵蓋面較廣的計(jì)算軟件,而且各種平臺(tái)的小工具仍不斷出現(xiàn)。這些大大方便了我們的生活給我們更多的選擇和實(shí)現(xiàn)方式。本程序?qū)崿F(xiàn)了加、減、乘、除、求冪、求模,求平方根,求Sin,求Cos,求Log10,求階乘,取整,求正切,以及進(jìn)制之間的相互轉(zhuǎn)換。它可以直接輸入數(shù)學(xué)表達(dá)式,不需要任何轉(zhuǎn)換,就可以直接輸出。1.3 設(shè)計(jì)上功能上的不足本程序雖然在其他簡(jiǎn)易計(jì)算器的基礎(chǔ)上新增加了很多類(lèi)容,如:三角函數(shù)的求值、指數(shù)函數(shù)的計(jì)算、任意數(shù)的任意次方、進(jìn)制之間的相互轉(zhuǎn)換等;但是由于個(gè)人能力的限制,仍不能實(shí)現(xiàn)四則混合運(yùn)算的功能,僅僅是能進(jìn)行一個(gè)兩個(gè)數(shù)或者一個(gè)數(shù)的計(jì)算,這是這個(gè)程序最為不足的地方。但是

5、我相信,隨著學(xué)習(xí)的不斷深入,這個(gè)功能在不久以后會(huì)被很好的實(shí)現(xiàn)。第二章 研究的基礎(chǔ) C語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言。它功能豐富、表現(xiàn)力強(qiáng)、使用靈活、應(yīng)用面廣、目標(biāo)程序效率高、可移植性好,既具有高級(jí)語(yǔ)言的特點(diǎn),有具有低級(jí)語(yǔ)言的功能,以此它成為當(dāng)今的主流程序設(shè)計(jì)語(yǔ)言之一。2.1 涉及的主要知識(shí)點(diǎn)本程序的知識(shí)點(diǎn)主要來(lái)源于譚浩強(qiáng)的C語(yǔ)言程序設(shè)計(jì),其中包含了C語(yǔ)言的數(shù)據(jù)類(lèi)型與基本操作、順序結(jié)構(gòu)設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)、函數(shù)、數(shù)組、指針等。本程序通過(guò)不同類(lèi)型數(shù)據(jù)間的轉(zhuǎn)換實(shí)現(xiàn)了部分進(jìn)制間的轉(zhuǎn)換,如十進(jìn)制轉(zhuǎn)換為八、十六中printf("%on",a); printf(&qu

6、ot;%xn",a);直接把輸入的十進(jìn)制數(shù)轉(zhuǎn)換成了八和十六進(jìn)制。對(duì)于控制程序進(jìn)行什么樣的計(jì)算方面,采用了輸入的方法,根據(jù)提示的信息,輸入不同的選項(xiàng),可以實(shí)現(xiàn)不同的運(yùn)算。在選擇結(jié)構(gòu)程序設(shè)計(jì)方面,采用if語(yǔ)句來(lái)判斷如在二級(jí)制數(shù)和十進(jìn)制數(shù)的相互轉(zhuǎn)換的過(guò)程中用ifelse語(yǔ)句對(duì)數(shù)的正負(fù)進(jìn)行判斷,為其分情況研究提供幫助;又如在一般二次方程的求解上運(yùn)用ifelse ifelseifelse語(yǔ)句對(duì)方程解的四種情況,即無(wú)解、兩個(gè)相同實(shí)數(shù)根、兩個(gè)不同實(shí)數(shù)根、和兩個(gè)虛數(shù)根分別進(jìn)行計(jì)算,以求出不同情況的解。本程序大量運(yùn)用switch case 語(yǔ)句;以實(shí)現(xiàn)本程序的不同功能。如圖(1):這里運(yùn)用switch

7、語(yǔ)句,來(lái)選擇你所以運(yùn)用到的這個(gè)程序的不同的功能,這里共有六個(gè),根據(jù)你要使用的功能,可以相應(yīng)的輸入數(shù)據(jù),來(lái)實(shí)現(xiàn)自己所需要的的計(jì)算。又如圖(2)對(duì)于加減乘除的簡(jiǎn)單的四則混合運(yùn)算也是運(yùn)用的switch語(yǔ)句來(lái)實(shí)現(xiàn)的;通過(guò)switch來(lái)實(shí)現(xiàn)加減乘除的多級(jí)運(yùn)算,而不是簡(jiǎn)單的兩個(gè)數(shù)相加減,但是由于沒(méi)有判斷優(yōu)先級(jí)的語(yǔ)句,所以此程序不能進(jìn)行優(yōu)先級(jí)的計(jì)算,只能從左到右的依次計(jì)算!本程序的循環(huán)結(jié)構(gòu)用的是while和for。對(duì)于需要逐級(jí)進(jìn)行的表達(dá)式,就用了這些循環(huán)語(yǔ)句在xy的for(i=1;i<=b;i+) c=c*x;,二級(jí)制十進(jìn)制的轉(zhuǎn)換while(a!=0)t=a%2;bi=t;i+;a=a/2; for(

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

9、部分內(nèi)容。關(guān)于數(shù)組方面,對(duì)于進(jìn)制的處理方面就用的是數(shù)組,把每個(gè)數(shù)字分別儲(chǔ)存在一個(gè)空間里,這樣就可以更方便的對(duì)數(shù)的每一個(gè)位進(jìn)行操作。而不用分別去求每一位的數(shù)值,正是基于這個(gè)原因,本程序可以對(duì)多達(dá)80位的數(shù)來(lái)進(jìn)行轉(zhuǎn)換。突破了只能對(duì)同一位數(shù)求解的限制。第三章 研究的可行性 3.1 技術(shù)的可行性本程序是用C語(yǔ)言編寫(xiě)的一部功能相對(duì)全面的簡(jiǎn)易計(jì)算器,它通過(guò)程序,可以幫助我們解決一些復(fù)雜的運(yùn)算。其所運(yùn)用的知識(shí)點(diǎn)也全部是C語(yǔ)言程序設(shè)計(jì)上的知識(shí)。對(duì)于一些不能解決的問(wèn)題,都可以在百度上找到根據(jù)。通過(guò)一個(gè)學(xué)期的學(xué)習(xí),我認(rèn)為要學(xué)號(hào)C語(yǔ)言程序這門(mén)課程,不僅要認(rèn)真閱讀課本知識(shí),更重要的是要通過(guò)上機(jī)實(shí)踐來(lái)鞏固我們的知識(shí),特

10、別是學(xué)計(jì)算機(jī)專(zhuān)業(yè)的,我們更應(yīng)該注重這一環(huán)節(jié),只有這樣我們才能成為一個(gè)合格的計(jì)算機(jī)人才。通過(guò)這一個(gè)課程設(shè)計(jì),進(jìn)一步來(lái)鞏固所學(xué)的語(yǔ)句,如:循環(huán),和分支結(jié)構(gòu)的運(yùn)用。還要熟悉四則運(yùn)算和函數(shù)的算法。通過(guò)這次課程設(shè)計(jì)擴(kuò)展自己的知識(shí)面,課本上的東西是遠(yuǎn)遠(yuǎn)不夠的,可以通過(guò)上網(wǎng)或去圖書(shū)館查資料等方式得到一些新的知識(shí),加深對(duì)課程化設(shè)計(jì)思想的理解,能進(jìn)行一個(gè)系統(tǒng)功能分析,并設(shè)計(jì)一個(gè)合理的模塊化結(jié)構(gòu),提高程序開(kāi)發(fā)能力。3.2 經(jīng)濟(jì)效益和社會(huì)效益的可行性 對(duì)于現(xiàn)在的科技發(fā)展的時(shí)代,機(jī)器代替了手工,人們?cè)絹?lái)越熱衷于對(duì)能節(jié)時(shí)省事的機(jī)器依賴(lài),而這個(gè)程序正好可以滿(mǎn)足人們對(duì)于麻煩計(jì)算的需要,通過(guò)使用這個(gè)計(jì)算器,來(lái)節(jié)省花在計(jì)算上的

11、時(shí)間,這也正好符合現(xiàn)代人的要求省事!同時(shí),其成本也很低,就這個(gè)程序而言,僅僅需要一部裝有Visual C+ 6.0的計(jì)算機(jī)就可以做出來(lái)了。而現(xiàn)在的電腦也普及于各個(gè)家庭了,所以也就對(duì)于大部分人來(lái)說(shuō),使用它不是問(wèn)題,你僅僅只需要下載個(gè)Visual C+ 6.0就可以使用這個(gè)程序了,同時(shí),你還可以通過(guò)Visual C+ 6.0來(lái)運(yùn)行其他自己感興趣的程序!第四章 研究的具體部分4.1 研究的主要流程圖 開(kāi)始 輸入數(shù)字(1-7),選擇服務(wù)項(xiàng)目輸入數(shù)字(1-7)?NOY 計(jì)算器運(yùn)算輸出計(jì)算結(jié)果 結(jié)束 4.2 研究的具體代碼/*主函數(shù)*/ #include"stdio.h" #inclu

12、de"math.h" #define N 80 #include "stdlib.h"#include"string.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 input a digital(1-7)n")

13、; scanf("%d",&choice); if(choice>=1&&choice<=7) switch(choice) case 1:YBys();break; case 2:TSys();break; case 3: PSys();break; case 4:jzzh1();break; case 5: jzzh2();break; case 6: qfcz();break; default:printf("the progress is over!n"); else printf("your inp

14、uts is error!n");flag=1; getch(); void displaymain()/*顯示主菜單*/ printf("="); printf("簡(jiǎn)易計(jì)算器"); printf("=n"); printf("請(qǐng)選擇n"); printf(" 1-簡(jiǎn)單四則運(yùn)算n"); printf(" 2-特殊數(shù)學(xué)運(yùn)算n"); printf(" 3-對(duì)數(shù)進(jìn)行排序并求最值n"); printf(" 4-十進(jìn)制轉(zhuǎn)化成N進(jìn)制n")

15、; printf(" 5-N進(jìn)制轉(zhuǎn)化成二進(jìn)制n"); printf(" 6-求解一般二元一次方程組n"); printf(" 7-退出運(yùn)算n"); void YBys()/*簡(jiǎn)單的四則運(yùn)算函數(shù)*/ float a,b; char c; printf("請(qǐng)輸入運(yùn)算數(shù)和四則運(yùn)算如a+(-,*,/)b:"); scanf("%f%c%f",&a,&c,&b); switch(c) case '+':printf("%fn",a+b);brea

16、k; case '-':printf("%fn",a-b);break; case '*':printf("%fn",a*b);break; case '/':printf("%fn",a/b);break; default: printf("輸入錯(cuò)誤"); void TSys()/*特殊的數(shù)學(xué)函數(shù)運(yùn)算函數(shù)*/ float x; int a,b,i; printf("atan(x),acos(x),asin(x),sin(x),cos(x),tan(x),l

17、og(x),(x),(x)(x)n"); printf("1-atan(x)n"); printf("2-acos(x)n"); printf("3-asin(x)n"); printf("4-sin(x)n"); printf("5-cos(x)n"); printf("6-tan(x)n"); printf("7-log(x)n"); printf("8-(x)n"); printf("9-(x)(x)n&quo

18、t;); printf("請(qǐng)選擇數(shù)學(xué)函數(shù)n"); scanf("%d",&a); printf("請(qǐng)輸入數(shù)值n"); scanf("%f",&x); if(a>=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&quo

19、t;,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(x);break; case 7:printf("log(x)=%f",log(x);break; case 8:printf("(x)=%f",sqrt(x);break; case 9: float c=1; printf("請(qǐng)?jiān)?/p>

20、輸入一個(gè)個(gè)數(shù)n"); scanf("%d",&b); for(i=1;i<=b;i+) c=c*x; printf("(x)(x)=%fn",c); ;break; else printf("your inputs is error!n");void PSys()/*找出最大值和最小值的函數(shù)*/ float aN,temp; int i,j,k,n; printf("請(qǐng)輸入要比較數(shù)的個(gè)數(shù)n"); scanf("%f",&n); printf("請(qǐng)輸入%d

21、數(shù)",n); for(i=0;i<n;i+) scanf("%f",&ai); for(i=0;i<n;i+) printf("%fn",ai); printf("nn"); for(k=0;k<n-1;k+) for(j=1;j<=n-k-1;j+) if(aj-1>aj) temp=aj-1; aj-1=aj; aj=temp; for(i=0;i<n;i+) printf("%fn",ai); printf("max=%f,min=%f"

22、;,an-1,a0); printf("n");void jzzh1()/*十進(jìn)制數(shù)轉(zhuǎn)化成二、八、十六進(jìn)制數(shù)*/ int a,t,bN,i=0,j,choice; printf("1-二進(jìn)制"); printf("2-八進(jìn)制"); printf("3-十六進(jìn)制"); printf("請(qǐng)選擇轉(zhuǎn)化形式(1-3)n"); scanf("%d",&choice); printf("請(qǐng)輸入十進(jìn)制數(shù)n"); scanf("%d",&

23、a); switch(choice) case 1: if(a>0) while(a!=0) t=a%2;bi=t; i+;a=a/2; /*正整數(shù)十進(jìn)制轉(zhuǎn)化二進(jì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; i+;a=a/2; /*負(fù)整數(shù)十進(jìn)制轉(zhuǎn)化二進(jìn)制*/ for(j=i-1;j>=0;j-) printf("%d",bj); ;break; printf(&qu

24、ot;n");break; case 2:printf("%on",a);break; case 3:printf("%xn",a);break; void jzzh2()/*N進(jìn)制數(shù)轉(zhuǎn)化成十進(jìn)制數(shù)的函數(shù)*/long t1;int i,n,t,t3;char aN;printf("請(qǐng)輸入一串?dāng)?shù)字 :n");scanf("%s",a);strupr(a);t3=strlen(a);t1=0;printf("please input n(2or8or16):n");scanf("

25、%d",&n);for(i=0;i<t3;i+) if(ai-'0'>=n&&ai<'A'|ai-'A'+10>=n) printf("data error!"); if(ai>='0'&&ai<='9') t=ai-'0' else if(n>=11&&(ai>='A'&&ai<='A'+n-10) t=ai-&

26、#39;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("請(qǐng)依次輸入一般二次方程的系數(shù)a,b,cn"); scanf("%f,%f,%f",&a,&b,&c); if(fabs(a)<=1e-6&&fabs(b)<=1e-6) printf("方程無(wú)解!n"); else if(fabs(a)<=1e-6&&fabs(b)>1e-6) printf("方程有單根是%8.4fn

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論