C語言簡單計算器的編寫課程設計_第1頁
C語言簡單計算器的編寫課程設計_第2頁
C語言簡單計算器的編寫課程設計_第3頁
C語言簡單計算器的編寫課程設計_第4頁
C語言簡單計算器的編寫課程設計_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、碼#include<>#include<>#include<> /*malloc 的頭文件代表在內存中開辟存儲空間 */ 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;/* 定義字符型數組 */double x,n,l,z=0,zhan350; /* 雙精度變量 x,n,l,z,zhan350*/typedef struct /* 表示可以用 con 定義結構體變量 */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')/* 內循環(huán)使用 if-else 語句 */z=0;j=i+1;while(aj>='0'&&aj<='9') /*內

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')/* 內循環(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、(') 定義當加號和括號同時出現時 */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='#') /* 邏輯運算 */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'/*分程序的運算 */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;邏輯運算中的或運算 */將的 zhan2t2 值賦給碰到 '0' 結束部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("# 表示開方, 表示乘方 ( 支持負數 )n");/* 對乘方和開方的定義 */printf(" 請輸入表達式無需輸入 = 號 直接回車可輸出答案 退出請輸入 q nn");scanf("%c",&x);if(x='q') break;while(x!='n') /* 碰 到 '0' 結束部分程序的運算 */a+i=x;scanf("%c",

13、&x);ai+1='0'jieguo=jisuan(a);printf("n");printf("結果為 :%lf",jieguo);printf("nnn");printf(" 退出請輸入 q 繼續(xù)請直接輸入 nn");4 設計結果與分析系統(tǒng)測試結果如下:根據電腦所給的提示出現語法錯誤,缺少變量的定義大多的語法錯誤在通過書本參 考下能夠修改。主要是平時看書不仔細、不太注意而產生的,如沒有注意具體數據使用 是有一定的范圍限定;過分重視分號的重要性而在 for 、if 、while 語句中畫蛇

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

15、同的變來名來表示,結果引起的那些錯誤解決了。語法錯誤大多的語法錯誤在通過書本參考下能夠修改。主要是平時缺乏鍛煉、不太注意而產 生的。如沒有注意具體數據使用是有一定的范圍限定;過分重視分號的重要性而在 for 、 if 、while 語句中畫蛇添足加分號。錯誤原因分析二注釋的位置 程序設計中在注釋的時候不能同我們平常寫字一樣隨心所欲,我們應該注意注釋的 格式。注釋中不能含有 C語言可執(zhí)行的語句。邏輯錯誤 編譯、連接的成功并不意味著程序的最終成功,邏輯上的錯誤機器不易檢查出來,這時 需要多數據結果進行分析。這種錯誤的查找是最難的,需要有相當的耐心和細心去把問 題找出來,這也是本次程序編輯過程中碰到

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論