大整數(shù)的四則運(yùn)算-課程設(shè)計(jì)說(shuō)明書(shū)(共17頁(yè))_第1頁(yè)
大整數(shù)的四則運(yùn)算-課程設(shè)計(jì)說(shuō)明書(shū)(共17頁(yè))_第2頁(yè)
大整數(shù)的四則運(yùn)算-課程設(shè)計(jì)說(shuō)明書(shū)(共17頁(yè))_第3頁(yè)
大整數(shù)的四則運(yùn)算-課程設(shè)計(jì)說(shuō)明書(shū)(共17頁(yè))_第4頁(yè)
大整數(shù)的四則運(yùn)算-課程設(shè)計(jì)說(shuō)明書(shū)(共17頁(yè))_第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、精選優(yōu)質(zhì)文檔-傾情為你奉上 中 北 大 學(xué)課程設(shè)計(jì)說(shuō)明書(shū)學(xué) 院、系:軟件學(xué)院專(zhuān) 業(yè):軟件工程學(xué) 生 姓 名:宋雨琪學(xué) 號(hào):設(shè) 計(jì) 題 目:大整數(shù)的四則運(yùn)算 起 迄 日 期: 2013年10月11日2013年11月16日指 導(dǎo) 教 師:薛海麗日期: 2013年11月16日1 設(shè)計(jì)目的 本課程設(shè)計(jì)是采用C語(yǔ)言,在VC平臺(tái)下實(shí)現(xiàn)大整數(shù)的四則運(yùn)算,該系統(tǒng)運(yùn)行在MS-DOS命令行模式下。本課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來(lái),鍛煉學(xué)生的分析解決實(shí)際問(wèn)題的能力。提高學(xué)生適應(yīng)實(shí)際,實(shí)踐編程的能力。 1)進(jìn)一步鞏固和復(fù)習(xí)C程序設(shè)計(jì)的基礎(chǔ)知識(shí); 2)培養(yǎng)學(xué)

2、生結(jié)構(gòu)化程序、模塊化程序設(shè)計(jì)的方法和能力; 3)了解軟件的編制過(guò)程及各環(huán)節(jié)的具體內(nèi)容; 4)提高學(xué)生程序調(diào)試技巧、軟件設(shè)計(jì)能力和代碼規(guī)范化等素質(zhì);提高學(xué)生分析問(wèn)題、解決問(wèn)題以及實(shí)際運(yùn)用能力。2 任務(wù)概述 完成大整數(shù)的四則運(yùn)算任務(wù),假定整數(shù)不超過(guò)五十位要求: 1) 在屏幕上能夠手動(dòng)輸入待求的兩個(gè)大整數(shù); 2) 輸入完成后通過(guò)選擇可以完成大整數(shù)的加、減、乘、除運(yùn)算; 3)將結(jié)果分別顯示在屏幕上。 4) 驗(yàn)收時(shí)程序能夠演示,自己?jiǎn)为?dú)做。3 模塊劃分 1) 定義c_to_d(char strN, char dN)函數(shù),實(shí)現(xiàn)把str的各位轉(zhuǎn)變成對(duì)應(yīng)整數(shù),右對(duì)齊存入d, start為最高位下標(biāo) 2)定義d

3、_to_c(char dN, char strN, int start)函數(shù),實(shí)現(xiàn)把d中數(shù)字dstart.N-1轉(zhuǎn)變?yōu)樽址髮?duì)齊存入str 3)定義加法函數(shù) 4)定義減法函數(shù) 5)定義乘法函數(shù) 6)定義除法函數(shù)7)定義輸出格式函數(shù) 8)運(yùn)用主函數(shù)計(jì)算4 主要函數(shù)說(shuō)明及其N(xiāo)-S圖 1)主函數(shù)說(shuō)明 定義變量 輸入要進(jìn)行運(yùn)算代碼數(shù)字 輸入數(shù)字 調(diào)用函數(shù)進(jìn)行運(yùn)算 2)其他函數(shù)說(shuō)明 min函數(shù),比較兩數(shù)大小 c_to_d(char strN, char dN)函數(shù),實(shí)現(xiàn)把str的各位轉(zhuǎn)變成對(duì)應(yīng)整數(shù),右對(duì)齊存入d, start為最高位下標(biāo) d_to_c(char dN, char strN, int st

4、art)函數(shù),實(shí)現(xiàn)把d中數(shù)字dstart.N-1轉(zhuǎn)變?yōu)樽址髮?duì)齊存入str add(char str_aN, char str_bN, char str_cN),加法函數(shù) sub(char str_aN, char str_bN, char str_cN),減法函數(shù) compare(char str1N, char str2N) ,實(shí)現(xiàn)str1,str2內(nèi)存的是要進(jìn)行比較的大整數(shù) mul(char str_aN, char str_bN, char str_cN),乘法函數(shù) divd(char str_aN, char str_bN, char str_cN),除法函數(shù)主要函數(shù)的N-S圖:fo

5、r(i=0,j=start;ilen;i+,j+)dj=stri-0)定義變量x,y,strN,dN,I,j,lenint len,start,i,jfor(i=0;iN;i+)di=0 len=strlen(str)start=N-lenreturn start圖1:函數(shù)c_to_d(char strN,char dN) N-S圖定義變量x,y,strN,dN,startI,j,lenint len,start,i,j for(i=0,j=start;i=start_c)定義變量 str_aN, str_bN, str_cN aN, bN,cN,i, start_a,start_b,star

6、t_c,carry,aN, bN,cNi=N-1;carry=0;調(diào)用函數(shù)c_to_d()start_c=min(start_a,start_b);start_c-;cstart_c=carry;調(diào)用函數(shù)d_to_c()圖3:加法運(yùn)算函數(shù)add()的N-S圖調(diào)用函數(shù)d_to_c()調(diào)用函數(shù)c_to_d()定義變量 str_aN, str_bN, str_cN aN, bN,cN,i, start_a,start_b,start_c,borrow while(i=start_a)ci=ai-bi-borrow如果有借位T Fborrow=1;ci+=10borrow=1;i-i+圖4:減法運(yùn)算函

7、數(shù)sub()的N-S圖len1=strlen(str1)if(len1len2)T F定義變量 str1N, str2N,len1,len2len2=strlen(str2)if(len1=start_b;j-)len1=strlen(str_a); len2=strlen(str_b)定義變量str_aN, str_bN, str_cN,len1, len2,i,j,k,carry,aN, bN, cN, dN,start_a, start_b, start_c, start_dfor(j=N-1;j=start_b;j-)memset(c,0,sizeof(c),)carry=0;for(

8、i=N-1,k=j;i=start_a;i-,k-)dk=ai*bj;carry=dk/10;dk=dk%10;if(carry0) 如果有進(jìn)位T Fdk=carry;k-;start_d=k+1; 把d累加到c中memset(c,0,sizeof(c),)carry=0for(i=N-1;i=start_d;i-)ci=ci+di+carry;carry=ci/10;ci=ci%10;if(carry0)T Fci=carry; i-;start_c=i+1;調(diào)用函數(shù)d_to_c(c,str_c,start_c)圖6:乘法運(yùn)算函數(shù)的N-S圖 定義變量str_aN, str_bN,str_cN

9、 ,cN,rmdN;tempN; i,k,len_rmd, len1,len2,cur;len1=strlen(str_a); len2=strlen(str_b)strcpy(rmd, str_a)rmdlen2=0;cur=len2-1 cur記下當(dāng)前商對(duì)應(yīng)的a中的下標(biāo)if(compare(rmd, str_b)=0)sub(rmd, str_b, temp);ck+;strcpy(rmd, temp);cur+len_rmd=strlen(rmd)rmdlen_rmd=str_acurrmdlen_rmd+1=0for(i=0;i4|x0)輸出(輸入錯(cuò)誤,請(qǐng)重新輸入) 再次輸入一個(gè)數(shù)字

10、輸出(”請(qǐng)輸入需要的兩個(gè)數(shù)”)輸入一個(gè)數(shù)再輸入一個(gè)數(shù)switch()case 1:運(yùn)行加法運(yùn)算case 2:運(yùn)行減法運(yùn)算case 3:運(yùn)行乘法運(yùn)算case 4:運(yùn)行除法運(yùn)算輸出結(jié)果圖8:運(yùn)行四則運(yùn)算的主函數(shù)的N-S圖5 程序運(yùn)行數(shù)據(jù)及其結(jié)果1) 測(cè)試加法輸入1再輸入和87圖一 加法運(yùn)算結(jié)果2) 測(cè)試減法輸入2再輸入2和 圖二 減法運(yùn)算結(jié)果3) 測(cè)試乘法輸入3再輸入和圖三 乘法運(yùn)算結(jié)果4) 測(cè)試除法輸入4再輸入和圖四 除法運(yùn)算結(jié)果5) 退出輸入0圖五 退出程序6 課程設(shè)計(jì)心得 這次我的課程設(shè)計(jì)是大整數(shù)的四則運(yùn)算,由于平常使用的32位操作系統(tǒng)上,整形數(shù)的長(zhǎng)度是32位,即四個(gè)字節(jié),對(duì)于一般的應(yīng)用,這

11、個(gè)長(zhǎng)度的整數(shù)已經(jīng)足夠。但是在某些領(lǐng)域,中,經(jīng)常需要用到長(zhǎng)達(dá)128位(16字節(jié))的整數(shù),對(duì)于這種整數(shù),內(nèi)部型是無(wú)法進(jìn)行計(jì)算的,所以我將大整數(shù)用字符串,數(shù)組的形式表示出來(lái),用于它的四則運(yùn)算。 通過(guò)此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)c語(yǔ)言設(shè)計(jì)方面的知識(shí),在設(shè)計(jì)過(guò)程中雖然遇到了一些問(wèn)題,但經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過(guò)親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。 在課程設(shè)計(jì)過(guò)程中,不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。在設(shè)計(jì)中遇到了很多問(wèn)題,最后在老師的指導(dǎo)以及同學(xué)的幫助下,終于迎刃而解。在今后社會(huì)的

12、發(fā)展和學(xué)習(xí)實(shí)踐過(guò)程中,一定要不懈努力,不能遇到問(wèn)題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問(wèn)題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘。 附錄:#include#include#define N 256int min(int x, int y)return xy?x:y;int c_to_d(char strN, char dN)/把str的各位轉(zhuǎn)變成對(duì)應(yīng)整數(shù),右對(duì)齊存入d, start為最高位下標(biāo)int len,start; /strlen(str)=5 N=10 start =10-5=5 int i,j;for(i=0;iN;i+)di=0;len=

13、strlen(str);start=N-len;for(i=0,j=start;ilen;i+,j+)dj=stri-0;return start;void d_to_c(char dN, char strN, int start)/把d中數(shù)字dstart.N-1轉(zhuǎn)變?yōu)樽址髮?duì)齊存入strint i,j;int len=N-start;for(i=0,j=start; i=start_c)ci=ai+bi+carry;carry=ci/10;ci=ci%10;i-;/如果有進(jìn)位if(carry0)start_c-;cstart_c=carry;/把c轉(zhuǎn)化為字符串str_cd_to_c(c, s

14、tr_c, start_c);/減法,subtrationvoid sub(char str_aN, char str_bN, char str_cN)/已假設(shè)abchar aN, bN,cN; /以右對(duì)齊的方式存儲(chǔ)各位數(shù)int i;int start_a,start_b;/分別存儲(chǔ)a,b,c中最高位的下標(biāo)int borrow;/借位/把str_a,str_b的各位轉(zhuǎn)變成對(duì)應(yīng)整數(shù),右對(duì)齊存入a,bstart_a=c_to_d(str_a, a);start_b=c_to_d(str_b, b);/從低位到高位,對(duì)應(yīng)位相減,注意借位memset(c,0,sizeof(c);/將c中有效的個(gè)字節(jié)替

15、換為并返回c;i=N-1;borrow=0;while(i=start_a)ci=ai-bi-borrow;if(ci0) /借位borrow=1;ci+=10;else /注意不可缺省borrow=0;i-; /去掉結(jié)果前面的while(iN & ci=0 )i+;/把c轉(zhuǎn)化為字符串str_cd_to_c(c, str_c, i);/i是c中最高位下標(biāo) int compare(char str1N, char str2N) /str1,str2內(nèi)存的是要進(jìn)行比較的大整數(shù) /如果前者大于后者,返回正數(shù),若相等返回,否則返回負(fù)數(shù)int len1,len2;len1=strlen(str1);le

16、n2=strlen(str2);if(len1len2)return 1;elsereturn strcmp(str1,str2);/乘法multiplicationvoid mul(char str_aN, char str_bN, char str_cN)int len1, len2,i,j,k,carry;char aN, bN, cN, dN;int start_a, start_b, start_c, start_d;len1=strlen(str_a);len2=strlen(str_b);/把str_a,str_b的各位轉(zhuǎn)變成對(duì)應(yīng)整數(shù),右對(duì)齊存入a,bstart_a=c_to_d

17、(str_a, a);start_b=c_to_d(str_b, b);memset(c, 0, sizeof(c);/用bj(j=N-1,N-2.,) 乘a,存入d,再把d累加到c中,注意錯(cuò)位問(wèn)題,d的最低位下標(biāo)不是N-1,而是jfor(j=N-1;j=start_b;j-)memset(d, 0, sizeof(d);carry=0;for(i=N-1,k=j;i=start_a;i-,k-) /注意d的最低位下標(biāo)從j開(kāi)始,而不是從N-1開(kāi)始dk=ai*bj;carry=dk/10;dk=dk%10;/如果有進(jìn)位if(carry0)dk=carry;k-;start_d=k+1;/把d累加

18、到c中carry=0;for(i=N-1;i=start_d;i-)ci=ci+di+carry;carry=ci/10;ci=ci%10;/如果有進(jìn)位if(carry0)ci=carry;i-;start_c=i+1;/把c轉(zhuǎn)化為字符串str_cd_to_c(c, str_c, start_c);/除法。divisionvoid divd(char str_aN, char str_bN, char str_cN)/已假設(shè)abchar cN; /以左對(duì)齊的方式存儲(chǔ)各位數(shù)char rmdN;/存儲(chǔ)余數(shù)char tempN;int i,k,len_rmd, len1,len2,cur;memset(c,0,sizeof(c);/準(zhǔn)備工作,先在被除數(shù)中取和除數(shù)同

溫馨提示

  • 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)論