C語言程序設計-簡單的計算器_第1頁
C語言程序設計-簡單的計算器_第2頁
C語言程序設計-簡單的計算器_第3頁
C語言程序設計-簡單的計算器_第4頁
C語言程序設計-簡單的計算器_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

-.z.--.--考試資料"程序設計根底(C)"課程設計報告簡易計算器設計學生姓名:學號:班級:指導老師:日期:309工作室設計目錄31961一、設計目標227431二、總體設計38058三、詳細設計521240四、調試與測試107308五、分析及結論1121339六、參考文獻1230011【附錄】13一、設計目標設計一個C語言程序〔簡單計算器設計〕具體要求:在功能上功能盡量模擬windows操作系統中的計算器,系統界面不做強制要求。主要功能:進展+、-、*、/、三角函數、對數、冪等各項數學運算,能夠進展進制間的相互轉換與計算。二、總體設計1、程序設計組成框圖2、設計思路簡單計算器的設計的程序中主要調用的函數有:數學函數的定義和I/O函數;設計思路和理念在于一切追求簡便易操作原理,通過個人的構思和設計以及調試運行設計出這一款簡單的計算器。3、程序設計流程圖三、詳細設計1、功能函數①函數的功能:兩數的+、-、*、/計算、求平均函數的入口:從main()的if(flag==1)開關構造中進入,即flag的值為1時進入該函數,從而進展該功能函數的計算。函數調用關系:被主函數調用,由if()開關構造中進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"),此時輸入"Y〞,繼續前面的構造。2、功能函數②函數的功能:*的y次方的計算、兩數的求余、以*為底y的對數函數的入口:從main()的if(flag==2)開關構造中進入,即flag的值為2時進入該函數,從而進展該功能函數的計算。函數調用關系:被主函數調用,由if()開關構造中進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"),此時輸入"Y〞,繼續前面的構造。3、功能函數③函數的功能:單個數值sin、cos、tan的計算,以e為底的指數、求絕對值函數的入口:從main()的if(flag==3)開關構造中進入,即flag的值為3時進入該函數,從而進展該功能函數的計算。函數調用關系:被主函數調用,由if()開關構造中進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"),此時輸入"Y〞,繼續前面的構造4、功能函數④函數的功能:單個數值的ln值、以10為底的對數、取整、平方、立方計算函數的入口:從main()的if(flag==4)開關構造中進入,即flag的值為4時進入該函數,從而進展該功能函數的計算。函數調用關系:被主函數調用,由if()開關構造中進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"),此時輸入"Y〞,繼續前面的構造5、功能函數⑤函數的功能:單個數值的倒數、階乘函數的入口:從main()的if(flag==5)開關構造中進入,即flag的值為5時進入該函數,從而進展該功能函數的計算。函數調用關系:被主函數調用,由if()開關構造中進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"),此時輸入"Y〞,繼續前面的構造6、功能函數⑥函數的功能:進展進制間的轉換函數的入口:從main()的if(flag==6)開關構造中進入,即flag的值為6時進入該函數,從而進展該功能函數的計算。函數調用關系:被主函數調用,由if()開關構造中進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"),此時輸入"Y〞,繼續前面的構造7、功能函數主菜單——本函數由本組成員共同設計函數的功能:提供本計算器的幾個功能選項,方便用戶使用函數的入口:從main函數的while(command_begin=='Y'||command_begin=='y')開場,當輸入"Y〞時進入本菜單。函數調用關系:被主函數調用,由while()構造進入。函數的出口:函數的出口為printf("是否繼續運算?(Y/N):"8、功能函數主函數——本函數由本組成員共同設計函數的功能:歡送頁面及退出畫面提示四、調試與測試1、調試方法翻開,先將各個功能函數的的內容清空,只保存主函數main(),然后編譯檢驗main()函數中是否有錯,如果沒有錯誤,再連接、運行。確認main()函數一切無誤后,然后依次參加功能函數①②③進展調試。當所有的功能函數都加上且正確無誤時,就可以進入下一個環節—程序的測試。2、測試方法:運行程序,然后進入簡易計算器的界面,在這里需要做的就是把自己當成一個公司的程序使用者,來對該程序進展使用,看該程序有哪些方面用著不夠爽,把這些問題依次整理出來,再對源程序進展修改,在這個過程中也需要對程序進展調試,不過不必將各個功能函數的的內容清空再進展如上述的調試方法,而是,改一部份運行一次,看是否有無錯誤。假設所有的錯誤都改正來了,且運行無誤,那就大功告成了。【在調試中遇到的問題:】調試過程中,我們遇到諸多小問題,但都在我們共同討論后解決了。1、問題:標點符號在輸入的時候,使用的是中文輸入法,這種錯誤一般都難以發現,讓修改的時候找不到目標。解決方法:用"替換〞。如果程序中的error很多,不管error是什么,先將標點替換成英文的標點。2、問題:調試時,有的時候編譯后沒什么問題,就是在點擊連接link時出現了錯誤。而且,這種錯誤讓我們不知道怎么修改。但是我們的程序確實正確。解決方法:將源程序保存〔save〕,然后關掉,重新啟動MicrosoftVisuaC6.0,五、分析及結論A、在設計中實現了設計目標能進展簡單的數學運算,在功能上竭力地模仿windows計算器B、其中遇到的問題輸入時,scantf()函數中出現非地址項,*變量未進展類型定義,以及語句末尾缺少分號等常見的低等錯誤。解決方法:根據的錯誤提示〔error〕與警告〔warning〕回到源程序逐一對錯誤和警告修改,每修改一次調試一次。C、該程序的缺乏生成的可執行程序操作界面不美觀,用編寫,未使用標準的TurborC2.0中的圖庫,所以不好看,但是這中DOS界面的東西再怎么弄都不好看,強烈建議下學期開課C++。D、實踐心得通過實踐的學習,我認到學好計算機要重視實踐操作,不僅僅是學習c語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。經過C語言課程設計實踐學習,使我對c語言有了更進一步的認識和了解,板通過實踐,我也發現我的好多缺乏之處,首先是在程序輸入上還不夠熟練,經常按錯字母,通過學習也有所改良;再有對c語言的一些標準庫函數不太了解,還有對函數調用的正確使用不夠熟悉,還有對c語言中經常出現的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。熟練地掌握了C語言的根本知識:數據類型〔整形、實型、字符型、指針、數組、構造等〕;運算類型〔算術運算、邏輯運算、自增自減運算、賦值運算等〕;程序構造〔順序構造、判斷選擇構造、循環構造〕;大程序的功能分解方法〔即函數的使用〕等。進一步掌握各種函數的應用,以及文件的讀寫操作等我認為要學好c語言程序這門課程,不僅要認真閱讀課本知識,更重要的是要通過上機實踐才能增強和穩固我的知識。只有這樣我們才能成為合格的計算機人材。六、參考文獻〔1〕"C語言程序設計.普措才仁版"〔2〕"C語言程序設計.譚浩強版"〔3〕"全國計算機等級考試——二級C語言.2008版"〔4〕"C語言上機指導"〔5〕"指南"〔6〕C語言之家(.cstudyhome.)〔7〕C語言教室(.vcok.)【附錄】源程序清單#include<stdio.h>#include<math.h>#include<string.h>#include<conio.h>#include<stdlib.h>voidmain(){charcommand_begin;//開場字符intflag;intact;inti;doublefirst_number;doublesecond_number;doublevalue_jia,value_jian,value_cheng,value_chu,value_pingjun;doublevalue_mi,value_yu,value_duishu;doublevalue_sin,value_cos,value_tan;doublevalue_e*p,value_ln,value_log;doublevalue_floor,value_n,value_2,value_3,value_daoshu,value_fabs;printf("\n\n");printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("┃**********************************************************┃\n");printf("┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");printf("┃***┃************************************************┃***┃\n");printf("┃***┃************************************************┃***┃\n");printf("┃***┃***歡送使用簡易計算器系統****┃***┃\n");printf("┃***┃*******┃***┃\n");printf("┃***┃*******┃***┃\n");printf("┃***┃***2013.07.05****┃***┃\n");printf("┃***┃************************************************┃***┃\n");printf("┃***┃************************************************┃***┃\n");printf("┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n");printf("┃**********************************************************┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf("\n\n");printf("printf("printf("【輸入Y,按回車鍵開場使用】\n\n");printf("是否開場?(Y/N):");scanf("%c",&command_begin);system("CLS");printf("\n");//由本組成員共同設計while(command_begin=='Y'||command_begin=='y'){//當接收Y/y命令時執行計算器程序 printf("【請選擇計算類別】\n\n"); printf("*····································*\n"); printf("**\n"); printf("*(1).兩數的+、-、*、/計算、求平均*\n"); printf("**\n"); printf("*(2).*的y次方的計算、兩數的求余、以*為底y的對數*\n"); printf("**\n"); printf("*(3).單個數值sin、cos、tan的計算,以e為底的指數、求絕對值*\n"); printf("**\n"); printf("*(4).單個數值的ln值、以10為底的對數、取整、平方、立方計算*\n");printf("**\n"); printf("*(5).單個數值的倒數、階乘*\n"); printf("**\n"); printf("*(6).進制之間的轉換*\n"); printf("**\n"); printf("*····································*\n"); printf("\n\n"); printf("請輸入1、2、3、4、5或6〔按回車鍵繼續〕:\n"); printf("\n\n\n\n\n");scanf("%d",&flag);//由本組成員共同設計if(flag==1) { system("CLS"); printf("\n\n"); printf("請輸入兩個數字,中間用空格隔開:\n\n\n"); scanf("%lf%lf",&first_number,&second_number);if(second_number==0){ value_jia=first_number+second_number;//加法 printf("兩數之和:%lf\n",value_jia);value_jian=first_number-second_number;//減法 printf("兩數之差:%lf\n",value_jian);value_cheng=first_number*second_number;//乘法 printf("兩數之積:%lf\n",value_cheng); value_chu=first_number/second_number;//除法 printf("兩數之商:除數不能為零,如果需要求商,請重新輸入:\n");//除法 value_pingjun=value_jia/2;//求平均 printf("平均數是:%lf\n",value_pingjun);}else{ value_jia=first_number+second_number;//加法 printf("兩數之和:%lf\n",value_jia);value_jian=first_number-second_number;//減法 printf("兩數之差:%lf\n",value_jian);value_cheng=first_number*second_number;//乘法 printf("兩數之積:%lf\n",value_cheng); value_chu=first_number/second_number;//除法 printf("兩數之商:%lf\n",value_chu); value_pingjun=value_jia/2;//求平均 printf("平均數是:%lf\n",value_pingjun);} } if(flag==2) { system("CLS"); printf("\n\n"); printf("請輸入兩個數字,中間用空格隔開:\n\n\n"); scanf("%lf%lf",&first_number,&second_number);if(second_number==0){ value_mi=pow(first_number,second_number);//冪次 printf("*的y次冪:%lf\n",value_mi); printf("取余為:除數不能為零,如果需要求余,請重新輸入:\n");//取余 printf("以*為底y的對數為:計算結果趨于無窮,無法顯示:\n");//*為底y的對數}else{ value_mi=pow(first_number,second_number);//冪次 printf("*的y次冪:%lf\n",value_mi); value_yu=fmod(first_number,second_number);//取余 printf("取余為:%lf\n",value_yu); value_duishu=(log10(second_number)/log10(first_number));//*為底y的對數 printf("以*為底y的對數為:%lf\n",value_duishu);} } if(flag==3) { system("CLS"); printf("\n\n"); printf("請輸入一個數字:"); scanf("%lf",&first_number); if(first_number>0) { value_sin=sin(first_number);//求sin printf("sin值:%lf\n",value_sin); value_cos=cos(first_number);//求cos printf("cos值:%lf\n",value_cos); value_tan=tan(first_number);//求tan printf("tan值:%lf\n",value_tan); value_e*p=e*p(first_number);//以e為底的指數 printf("e*p值:%lf\n",value_e*p); value_fabs=fabs(first_number);//求絕對值 printf("*的絕對值:%lf\n",value_fabs); } if(first_number==0) { value_sin=sin(first_number);//求sin printf("sin值:%lf\n",value_sin); value_cos=cos(first_number);//求cos printf("cos值:%lf\n",value_cos); value_tan=tan(first_number);//求tan printf("tan值:%lf\n",value_tan); value_e*p=e*p(first_number);//以e為底的指數 printf("e*p值:%lf\n",value_e*p); value_fabs=fabs(first_number);//求絕對值 printf("*的絕對值:%lf\n",value_fabs); } if(first_number<0) {value_sin=sin(first_number);//求sin printf("sin值:%lf\n",value_sin); value_cos=cos(first_number);//求cos printf("cos值:%lf\n",value_cos); value_tan=tan(first_number);//求tan printf("tan值:%lf\n",value_tan); value_e*p=e*p(first_number);//以e為底的指數 printf("e*p值:%lf\n",value_e*p); value_fabs=fabs(first_number);//求絕對值 printf("*的絕對值:%lf\n",value_fabs); } } if(flag==4) { system("CLS"); printf("\n\n"); printf("請輸入一個數字:"); scanf("%lf",&first_number); if(first_number>0) { value_ln=log(first_number);//求ln printf("ln值:%lf\n",value_ln); value_log=log10(first_number);//以10為底的對數 printf("10為底的對數:%lf\n",value_log); value_floor=floor(first_number);//取整 printf("*取整:%lf\n",value_floor); value_2=pow(first_number,2);//求*的平方 printf("*的平方:%lf\n",value_2); value_3=pow(first_number,3);//求*的立方 printf("*的立方:%lf\n",value_3); } if(first_number==0) { printf("ln值:計算結果趨于無窮,無法顯示:\n");//求ln printf("10為底的對數:計算結果趨于無窮,無法顯示:\n");//以10為底的對數 value_floor=floor(first_number);//取整 printf("*取整:%lf\n",value_floor); value_2=pow(first_number,2);//求*的平方 printf("*的平方:%lf\n",value_2); value_3=pow(first_number,3);//求*的立方 printf("*的立方:%lf\n",value_3); } if(first_number<0) { value_e*p=e*p(first_number);//以e為底的指數 printf("e*p值:%lf\n",value_e*p); printf("ln值:*不能小于0,請重新輸入:\n");//求ln printf("10為底的對數:Y不能小于0,請重新輸入:\n");//以10為底的對數 value_floor=floor(first_number);//取整 value_2=pow(first_number,2);//求*的平方 printf("*的平方:%lf\n",value_2); value_3=pow(first_number,3);//求*的立方 printf("*的立方:%lf\n",value_3); } } if(flag==5) { system("CLS"); printf("\n\n"); printf("請輸入一個數字:"); scanf("%lf",&first_number); if(first_number>0) { value_n=1;//求階乘 for(i=1;i<(first_number+1);i++)value_n=value_n*i; printf("n階乘:%lf\n",value_n);value_daoshu=1/first_number;//求倒 printf("*的倒數:%lf\n",value_daoshu); } if(first_number==0) { value_n=1;//求階乘 for(i=1;i<(first_number+1);i++)value_n=value_n*i; printf("n階乘:%lf\n",value_n); printf("*的立方:%lf\n",value_3); printf("*的倒數:0不能求倒\n");//求倒 } if(first_number<0) { printf("n階乘:所輸入數字無法求階乘,請重新輸入:\n");//求階乘value_daoshu=1/first_number;//求倒 printf("*的倒數:%lf\n",value_daoshu); } } if(flag==6)lab: { system("CLS"); printf("\n\n"); printf("八進制轉換為其他進制請輸入8,\n十進制轉換為其他進制請輸入10,\n十六進制轉換為其他進制請輸入16,\n請按照需要輸入8、10或16:"); scanf("%d",&act); if(act==8)//八進制轉換為十進制、十六進制 { printf("請輸入一個八進制數字:\n\n"); scanf("%o",&first_number); printf("八進制%o\n\n",first_number); printf("轉換為:\n"); printf("十進制%u\n",first_number); printf("十六進制%*\n",first_number); } if(act==10)//十進制轉換為八進制

溫馨提示

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

評論

0/150

提交評論