

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課程設計(論文)任務書</p><p><b> 摘 要</b></p><p> 課程設計語言類課程的指導思想:使學生通過學習高級編程語言的知識、編程技術和基本算法,掌握課程設計的思想和方法,具備利用計算機求解實際問題的能力,能靈活運用高級語言進行程序設計。</p><p> 現(xiàn)時學習生活中,常會遇到一些數(shù)目較大
2、數(shù)據(jù)繁雜的數(shù)值運算,徒手運算起來很困難,這時候我們就必須用到計算器。本程序的編寫基礎是VC2010,本程序實現(xiàn)了加、減、乘、除、求冪、求Sin,求Cos,求Log10,求階乘,</p><p> 這款簡單的計算器最獨特的地方在于充分運用棧,儲存分配及switch的相關知識.例如構造棧,棧的指針,棧空間存儲分配,插入棧元素,壓棧,出棧.同時穿插用typedef命名已有結構體,參量傳遞,邏輯判斷等重要知識.并且,該
3、程序也運用選擇結構,循環(huán)結構,函數(shù)的嵌套結構一系列基礎知識,涉及if else語句,break語句,字符常量和多種運算符的規(guī)范使用.總體來說,該程序較好的呈現(xiàn)了</p><p> 關鍵字:C語言程序設計 基本算法 高級編程語言 思想和方法 計算器</p><p><b> VC2010 </b></p><p><b> 目錄
4、</b></p><p> 第1章選題的意義………………………………………………………………4</p><p> 1.1選題……………………………………………………………………4</p><p> 第2章系統(tǒng)功能需求分析………………………………………………………5</p><p> 2.1系統(tǒng)的基本要求…………………………
5、……………………………5</p><p> 2.2數(shù)據(jù)結構和用法………………………………………………………5</p><p> 第3章系統(tǒng)設計…………………………………………………………………6</p><p> 第4章系統(tǒng)實現(xiàn)…………………………………………………………………7</p><p> 第5章總結…………………………………
6、………………………………………8 </p><p> 第6章主要的參考文獻………………………………………………………….17</p><p><b> 第1章選題的意義</b></p><p><b> 1.選題</b></p><p> 我選的題目是:簡單計算器的設計</p>
7、<p> 我選這道題的原因如下:</p><p> 計算器對我們每一的學生都很熟悉,從初中到高中再到大學。但是我們只知道按下幾個按鈕計算器便會顯示出結果,很少有學生分析過計算器究竟是如何運行的。C語言課程設計便是一個很好的機會,讓我實踐計算器的運行代碼.</p><p> 運用的數(shù)據(jù)結構和知識點</p><p> VC2010繪圖知識數(shù)學函數(shù)選
8、擇結構循環(huán)結構數(shù)組指針順序結構</p><p> 時間安排:第一周查閱資料</p><p> 第二周第一、二天程序設計;第三、四天程序調試與測試;第五天答辯</p><p> 第2章系統(tǒng)功能需求分析</p><p> 2.1系統(tǒng)的基本要求</p><p> 1. 算術運算功能。能夠實現(xiàn)+、-、*、/、mod、
9、int運算。</p><p> 2. 函數(shù)運算功能。能夠實現(xiàn)ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等運算。</p><p> 3.通過鍵盤控制字符和數(shù)字的輸入。</p><p> 2.2數(shù)據(jù)結構設計及用法說明</p><p> 此程序調用的函數(shù)主要有<math.h> /*數(shù)學函數(shù)的定
10、義*/<conio.h> /*屏幕操作函數(shù)*/<stdio.h> /*I/O函數(shù)*/<stdlib.h> /*庫函數(shù)*/<stdarg.h> /*變量長度參數(shù)表*/<graphics.h> /*圖形函數(shù)*/<string.h> /*字符串函數(shù)*/<ctype.h> /*字符操作函數(shù)*/?;臼褂?用→←↑↓控制鼠標圖形移動,當移動到相應得按
11、鈕時按回車鍵輸入當前數(shù)字或執(zhí)行對應的函數(shù)。</p><p> 加法:輸入一個被加數(shù)數(shù),按“+”,輸入被加數(shù),按“=”,輸出結果。</p><p> 減法:輸入被減數(shù)數(shù),按“-”,輸入減數(shù),按“=”,輸出結果。</p><p> 乘法: 輸入一個數(shù),按“*”,輸入另個數(shù),按“=”,輸出結果。</p><p> 除法: 輸入一個被除數(shù),按
12、“+”,輸入另個除數(shù),按“=”,輸出結果。</p><p> 求x的y次方: 輸入數(shù)x,按“^”,輸入數(shù)y,按“=”,輸出結果。</p><p> 求余:輸入一個數(shù),按“mod”,按“=”,輸出結果。</p><p> 取整:輸入一個數(shù),按“int”,按“=”,輸出結果。</p><p> 余弦:輸入一個數(shù),按“cos”,按“=”,輸
13、出結果。</p><p> 正弦:輸入一個數(shù),按“sin”,按“=”,輸出結果。</p><p> 正切:輸入一個數(shù),按“tan”,按“=”,輸出結果。</p><p> 階乘:輸入一個數(shù),按“n!”,按“=”,輸出結果。</p><p> 倒數(shù):輸入一個數(shù),按“1/x”,按“=”,輸出結果</p><p>
14、 十進制轉二進制:輸入一個十進制數(shù),按“10->2”,輸出二進制結果。</p><p> 十進制轉八進制:輸入一個十進制數(shù),按“10->8”,輸出八進制結果。</p><p> 八進制轉十進制:輸入一個八進制數(shù),按“10->8”,輸出十進制結果。</p><p><b> 第3章系統(tǒng)設計</b></p>&
15、lt;p><b> 流程圖</b></p><p><b> 第四章系統(tǒng)實現(xiàn)</b></p><p> 本系統(tǒng)采用 C語言開發(fā),生成可執(zhí)行文件在任何系統(tǒng)下都可以執(zhí)行,具有很好的數(shù)據(jù)處理能力和穩(wěn)定性。并且使用VC2010在原有基礎上實現(xiàn)了多漢字的支持,方便了我們的使用。生成的程序可移植性強、兼容性好。這個系統(tǒng)是基于軟件發(fā)展的生命周期來研
16、制的,它可以直接輸入數(shù)學表達式,不需要任何轉換,就可以直接輸出數(shù)學四則運算的結果。</p><p> 本程序通過調用int specialkey(void) 和#include <conio.h> 來實現(xiàn)對屏幕的操作,通過調用int arrow()函數(shù),int specialkey(void) 和#include <conio.h>來實現(xiàn)對光標的操作。計算器圖形采用VC2010繪圖程序
17、制作。</p><p> 計算器數(shù)據(jù)運行的實現(xiàn):第5章總結</p><p> 測試階段中我發(fā)現(xiàn)了幾處錯誤導致程序不能編譯,去圖書館查找相關的資料, 又同學一起討論。通過耐心的分析源代碼終于編好了一個完整無誤的程序。在這次的c語言程序設計實習中遇到了現(xiàn)實編程中必然見到的問題通過這些問題的解決積累了編程的實踐經(jīng)驗。</p><p> 善于總結,是學習能力的一種體現(xiàn)
18、,每次完成一個編程任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況,隨時總結,找到自己的不足,這樣所編寫的程序才能逐步提高.課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.</p><p> 通過此次課程設計不僅鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。使我們懂得了理論與實際相結合是很重要的,只有
19、理論知識是遠遠不夠的,只有把所學的理論知識與實踐相我們把前面所學過的知識又重新溫故了一遍。</p><p> 通過這次課程設計,我增強了觀察、分析和解決問題的實際工作能力.找出學習中存在的不足,以便為完善學習計劃,改變學習內容與方法提供實踐依據(jù)。而這種實際能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。</p><p><b> 附程序源代碼:</b>&l
20、t;/p><p> typedef char SElemType;</p><p> #include "string.h"</p><p> #include "stdio.h"</p><p> #include "stdlib.h"</p><p>
21、 #include "math.h"</p><p> #include "process.h"</p><p> #define TURE 1</p><p> #define FALSE 0</p><p> #define OK 1</p><p> #defi
22、ne ERROR 0</p><p> #define OVERFLOW -2</p><p> #define STACK_INIT_SIZE 10 </p><p> #define STACK_INCREMENT 2 typedefstructSqStack</p><p><b> {</b></p
23、><p> double *base; double *top; intstacksize;</p><p><b> }SqStack;</b></p><p> voidInitStack(SqStack&S)</p><p> { if(!(S.base=(double *)malloc(S
24、TACK_INIT_SIZE*sizeof(double))))</p><p> exit(OVERFLOW); </p><p> S.top=S.base;</p><p> S.stacksize=STACK_INIT_SIZE;</p><p><b> }</b></p><p&g
25、t; doubleClearStack(SqStack&S)</p><p> { S.top=S.base;</p><p> return OK;</p><p><b> }</b></p><p> doubleGetTop(SqStackS,double&e)</p>&
26、lt;p> { if(S.top>S.base)</p><p> { e=*(S.top-1);</p><p> return OK;</p><p><b> }</b></p><p><b> else</b></p><p> r
27、eturn ERROR;</p><p><b> }</b></p><p> void Push(SqStack&S,double e)</p><p> { if(S.top-S.base>=S.stacksize) {</p><p> S.base=(double *)re
28、alloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(double));</p><p> if(!S.base)</p><p> exit(OVERFLOW); S.top=S.base+S.stacksize;</p><p> S.stacksize+=STACK_INCREMENT;</p>
29、<p><b> }</b></p><p> *(S.top)++=e;</p><p><b> }</b></p><p> double Pop(SqStack&S,double&e)</p><p> { if(S.top==S.base)</p
30、><p> return ERROR;</p><p> e=*--S.top;</p><p> return OK;</p><p><b> }</b></p><p> SElemTypePrecede(SElemType t1,SElemType t2)</p>&l
31、t;p><b> { char f;</b></p><p> switch(t2)</p><p><b> {</b></p><p><b> case '+':</b></p><p> case '-':if(t1==&
32、#39;('||t1=='=')</p><p> f='<'; // t1<t2</p><p><b> else</b></p><p> f='>'; // t1>t2</p><p><b> break;<
33、/b></p><p><b> case '*':</b></p><p> case '/':if(t1=='*'||t1=='/'||t1==')'||t1=='s'||t1=='l'||t1=='g'||t1=='c
34、')</p><p> f='>'; // t1>t2</p><p><b> else</b></p><p> f='<'; // t1<t2</p><p><b> break;</b></p><
35、p> case '(':if(t1==')')</p><p><b> {</b></p><p> printf("Error!\n");</p><p> exit(ERROR);</p><p><b> }</b><
36、/p><p><b> else</b></p><p> f='<'; // t1<t2</p><p><b> break;</b></p><p> case ')':switch(t1)</p><p><b&g
37、t; {</b></p><p> case'(':f='='; // t1=t2</p><p><b> break;</b></p><p> case'=':printf("Error!!\n");</p><p> exi
38、t(ERROR);</p><p> default :f='>'; // t1>t2</p><p><b> }</b></p><p><b> break;</b></p><p> case'=':switch(t1)</p>
39、<p><b> {</b></p><p> case'=' :f='='; // t1=t2</p><p><b> break;</b></p><p> case'(' :printf("Error!!!\n");</
40、p><p> exit(ERROR);</p><p> default :f='>';</p><p><b> }</b></p><p> break;// t1>t2</p><p> case'^':if(t1=='('|
41、|t1=='^'||t1=='=')</p><p><b> f='<';</b></p><p><b> else</b></p><p><b> f='>';</b></p><p>&
42、lt;b> break;</b></p><p><b> case's':</b></p><p><b> case'c':</b></p><p><b> case'g':</b></p><p>
43、; case'l':switch(t1)</p><p><b> {</b></p><p><b> case')':</b></p><p><b> case'l':</b></p><p><b>
44、case'g':</b></p><p><b> case'c':</b></p><p> case's':printf("Error!");exit(ERROR);</p><p><b> case'(':</b>
45、</p><p><b> case'=':</b></p><p><b> case'+':</b></p><p><b> case'-':</b></p><p><b> case'*'
46、;:</b></p><p><b> case'/':</b></p><p> case'^':f='<';break;</p><p><b> }</b></p><p><b> break;</b&
47、gt;</p><p><b> }</b></p><p><b> return f;</b></p><p><b> }</b></p><p> double Operate1(double a,SElemTypetheta,double b)</p&g
48、t;<p> {double c;</p><p> switch(theta)</p><p><b> {</b></p><p> case'+':c=a+b;break;</p><p> case'-':c=a-b;break;</p>&l
49、t;p> case'*':c=a*b;break;</p><p> case'/':c=a/b;break;</p><p> case'^':c=pow(a,b);break;</p><p><b> }</b></p><p><b> r
50、eturn c;</b></p><p><b> }</b></p><p> double Operate2(SElemTypetheta,double a)</p><p> {double c;</p><p> switch(theta)</p><p><b&
51、gt; {</b></p><p> case's':c=sin(a);break;</p><p> case'c':c=cos(a);break;</p><p> case'l':c=log(a);break;</p><p> case'g':c=l
52、og10(a);break;</p><p><b> }</b></p><p><b> return c;</b></p><p><b> }</b></p><p> double In(SElemType c)</p><p> {
53、 switch(c)</p><p><b> {</b></p><p><b> case'+':</b></p><p><b> case'-':</b></p><p><b> case'*':<
54、;/b></p><p><b> case'/':</b></p><p><b> case'(':</b></p><p><b> case')':</b></p><p><b> case
55、9;=':</b></p><p><b> case'^':</b></p><p><b> case's':</b></p><p><b> case'l':</b></p><p><b&
56、gt; case'g':</b></p><p> case'c':return 1;</p><p> default:return 0;</p><p><b> }</b></p><p><b> }</b></p><
57、;p> int _tmain(intargc, _TCHAR* argv[])</p><p><b> {</b></p><p> printf("\nwedefined:s()=sin(),c()=cos(),l()=ln(),g()=lg()\n");</p><p> SqStack OPTR,OPN
58、D;</p><p><b> int e;</b></p><p> doublea,b,x,theta;</p><p> double d,f;</p><p><b> char c;</b></p><p> char z[60];</p>
59、<p><b> int i;</b></p><p> InitStack(OPTR);</p><p> InitStack(OPND);</p><p><b> do</b></p><p><b> {</b></p><p&g
60、t; Push(OPTR,'=');</p><p> printf("Please Enter:\n");</p><p> c=getchar();</p><p> GetTop(OPTR,theta);</p><p> while(c!='='||theta!='
61、=')</p><p> {if(In(c))</p><p><b> {</b></p><p> switch(Precede(theta,c))</p><p><b> {</b></p><p> case '<': Pus
62、h(OPTR,c);</p><p> c=getchar();</p><p> GetTop(OPTR,theta);</p><p><b> break;</b></p><p> case '=':Pop(OPTR,theta);</p><p> GetTop
63、(OPTR,theta);</p><p> if(theta=='s'||theta=='l'||theta=='c'||theta=='g'){Pop(OPND,f);</p><p> Pop(OPTR,theta);</p><p> Push(OPND,Operate2(theta,f)
64、);</p><p> GetTop(OPTR,theta);</p><p> c=getchar();</p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b><
65、/p><p><b> {</b></p><p> c=getchar();</p><p><b> break;</b></p><p><b> }</b></p><p> cas'>':if(theta=='
66、;+'||theta=='-'||theta=='*'||theta=='/'||theta=='^')</p><p> {Pop(OPTR,theta);</p><p> Pop(OPND,b);</p><p> Pop(OPND,a);</p><p>
67、 f=Operate1(a,theta,b);</p><p> Push(OPND,f);</p><p> GetTop(OPTR,theta);</p><p><b> break;</b></p><p><b> }</b></p><p> else
68、break;</p><p><b> }</b></p><p><b> }</b></p><p> else if(c>='0'&&c<='9'||c=='.')</p><p><b> {<
69、;/b></p><p><b> i=0;</b></p><p><b> do</b></p><p><b> {</b></p><p> z[i]=c;i++;</p><p> c=getchar();</p>
70、<p><b> }</b></p><p> while((c<='9'&&c>='0')||c=='.');</p><p><b> z[i]=0;</b></p><p> d=atof(z);</p>&
71、lt;p> Push(OPND,d);</p><p><b> }</b></p><p> else {</p><p> printf("error\n");</p><p> exit(ERROR);</p><p><b>
72、; }</b></p><p><b> }</b></p><p> GetTop(OPND,x);</p><p> printf("%f",x);</p><p> ClearStack(OPTR);</p><p> ClearStack(OPN
73、D);</p><p> printf("\nWant to use it again?Yes:1,No:0");</p><p> scanf("%d",&e);</p><p> x=getchar();</p><p><b> }</b></p>
74、<p> while(e);printf("\nThanks for using the calulating device!!!");</p><p> printf("\npress any key to continue...");</p><p> x=getchar();</p><p> x=
75、getchar();</p><p><b> }</b></p><p><b> 主要參考文獻:</b></p><p> 《C語言繪圖與計算機仿真技術》王強如北京航空航天大學</p><p> [1]科欽.C語言程序設計.北京:電子工業(yè)出版社,1987:56-58 </p>
76、<p> [2]徐君毅.C語言程序設計基礎.上海:復旦大學出版社,1992:87-98</p><p> [3]李成付.C語言程序設計基礎.北京:科學出版社,1992:42-67</p><p> [4]郝玉潔.C語言程序設計.北京:機械工業(yè)出版社,2000:63-88</p><p> [5]錢啟平.C語言程序設計基礎.北京:中國鐵道出版社,
77、2000:91-99</p><p> [6]李大友.C語言程序設計基礎.北京:清華大學出版社,1999:58-98</p><p> [7]黃迪明.C語言程序設計.北京:電子科技大學出版社,1998:78-98</p><p> [8]姜仲秋.C語言程序設計基礎.南京:南京大學出版社,1998:16-100</p><p> [9]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡單計算器課程設計
- 簡單的計算器課程設計
- 課程設計---簡單的計算器
- 課程設計--簡單的計算器設計
- 課程設計--簡單計算器的設計
- 簡單的計算器課程設計
- 課程設計--簡單計算器的設計
- 簡單計算器課程設計報告
- vb課程設計--簡單計算器
- 簡單計算器課程設計報告
- c++課程設計--簡單計算器
- c++課程設計--簡單計算器
- vc++課程設計---簡單計算器的設計
- 匯編語言課程設計--簡單計算器設計
- c++簡單計算器課程設計報告
- 課程設計實驗報告--簡單的計算器設計
- c++課程設計報告--簡單計算器
- 單片機課程設計——簡單計算器的設計
- c語言簡單計算器的編寫課程設計
- 數(shù)據(jù)結構課程設計報告--簡單計算器
評論
0/150
提交評論