數(shù)字之魅-找符合條件的整數(shù)大_第1頁
數(shù)字之魅-找符合條件的整數(shù)大_第2頁
數(shù)字之魅-找符合條件的整數(shù)大_第3頁
數(shù)字之魅-找符合條件的整數(shù)大_第4頁
數(shù)字之魅-找符合條件的整數(shù)大_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、大整大整數(shù)的加把兩個大整數(shù)(都是正整數(shù))相加,把結(jié)果存到一個新大整大整數(shù)的加把兩個大整數(shù)(都是正整數(shù))相加,把結(jié)果存到一個新的大整數(shù)中代#include #define MAXLEN typedef struct void fHp(const HP voidPlus(constHPa,constHPb,HPHPa.data1 = a.data2 = a.len=b.data1 = b.data2 = b.len=return void fHp(const HP for(i=1;i=/ 大整數(shù)的加voidfor(i=1;i=/ 大整數(shù)的加voidPlus(constHPa,constHPb,HP

2、(*c).data1 = /初始值必須/ 大整數(shù)a,b的加法操作和結(jié)果c的進位操for (i=1; i=a.len | i=b.len | (*c).datai; if(i=a.len)(*c).datai+=if(ib for (i=1,j=0; i=a.len; / j 表示是否要進行(*c).datai = a.datai - if(i=b.len)(*c).datai-=/這里可以知道結(jié)構(gòu)體HP data if (*c).datai 1&!(*c).data(*c).len)(*c).len-首位為 0 的情況。使用1 是因為當全部為 0 的時候,len=1帶符號的大整數(shù)的加減使用ty

3、pedef struct data0作為符號標志位,為1表示為負,為0表示為正。要這樣代#include #define MAXLEN typedef struct void fHp(const HP void Subtract(const HP x, const HP y, HP voidPlus(constHPx,constHPy,HPHP/這里就是消/測試腳手/等位數(shù)的情況下的|a| f(ab 等位數(shù)且|a| /a=/測試腳手/等位數(shù)的情況下的|a| f(ab 等位數(shù)且|a| /a=22,b=-21,a+b=1,a-b=a.data2=2; a.data1=2; a.data0=b.da

4、ta2=2; b.data1=1; b.data0=c.data0 = a.len=b.len=f(%d+(%d) = ,22,-/必須要重新c.data0 = f(%d-(%d) = ,22,-21); /a=22,b=21,a+b=43,a-b=a.data2=2; a.data1=2; a.data0=b.data2=2; b.data1=1; b.data0=c.data0 = a.len=b.len=f(%d+%d = c.data0=f(%d-%d = /a=-22,b=21,a+b=-1,a-b=-a.data2=2; a.data1=2; a.data0=b.data2=2;

5、b.data1=1; b.data0=c.data0 = a.len=b.len=f(%d)+%d = ,-c.data0=f(%d)-%d = ,-/a=-22,b=-21,a+b=-43,a-b=-a.data2=2; a.data1=2; a.data0=b.data2=2; b.data1=1; b.data0=a.data2=2; a.data1=2; a.data0=b.data2=2; b.data1=1; b.data0=c.data0 = a.len=b.len=c.data0 = f(%d)-(%d) = ,-22,-/等位數(shù)的情況下的|a| /a=20,b=-21,a+b

6、=-1,a-b=a.data2=2; a.data1=0; a.data0=b.data2=2; b.data1=1; b.data0=c.data0 = a.len=b.len=f(%d+(%d) = ,20,-c.data0=f(%d-(%d) = ,20,-/a=20,b=21,a+b=41,a-b=-a.data2=2; a.data1=0; a.data0=b.data2=2; b.data1=1; b.data0=c.data0 = a.len=b.len=f(%d+%d = c.data0=f(%d-%d = /a=-20,b=21,a+b=1,a-b=-a.data2=2; a

7、.data1=0; a.data0=b.data2=2; b.data1=1; b.data0=a.len=b.len=c.data0 = f(%d)+%d = ,-c.data0=f(%d)-%d = ,-/ac.data0 = f(%d)+%d = ,-c.data0=f(%d)-%d = ,-/a=-20,b=-21,a+b=-41,a-b=a.data2=2; a.data1=0; a.data0=b.data2=2; b.data1=1; b.data0=c.data0 = a.len=b.len=c.data0 = f(%d)-(%d) = ,-20,-/a 的位數(shù)比b 的位數(shù)/a

8、=-120,b=-21,a+b=-141,a-b=-a.data3=1; a.data2=2; a.data1=b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=c.data0 = f(%d)-(%d) = ,-120,-/a=120,b=21,a+b=141,a-b=a.data3=1; a.data2=2; a.data1=b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=f(%d+%d = c.data0 = f(%d-%d = /a=-120,

9、b=21,a+b=-99,a-bf(%d+%d = c.data0 = f(%d-%d = /a=-120,b=21,a+b=-99,a-b=-a.data3 = a.data2=2;a.data1=b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=f(%d)+%d = ,-c.data0 = f(%d)-%d = ,-/a=-120,b=-21,a+b=-141,a-b=-a.data3=1; a.data2=2; a.data1=b.data2=2; b.data1=c.data0 = a.data0 = b.data

10、0 = a.len=b.len=c.data0 = f(%d)-(%d) = ,-120,-/b 的位數(shù)比a 的位數(shù)/a=-20,b=-121,a+b=-141,a-b=a.data2=2; a.data1=b.data3=1; b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=c.data0 = f(%d)-(%d) = ,-20,-/a=20,b=121,a+b=141,a-b=-a.data2=c.data0 = f(%d)-(%d) = ,-20,-/a=20,b=121,a+b=141,a-b=-a.data2=

11、2; a.data1=b.data3=1; b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=f(%d+%d = c.data0=f(%d-%d = /a=-20,b=121,a+b=101,a-b=-a.data2=2; a.data1=b.data3=1; b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=f(%d)+%d = ,-c.data0 = f(%d)-%d = ,-/a=-20,b=-121,a+b=-141,a-b=a.data2=2

12、; a.data1=b.data3=1; b.data2=2; b.data1=c.data0 = a.data0 = b.data0 = a.len=b.len=c.data0 = f(%d)-(%d) = ,-20,-return void fHp(const HP if(x.data0 = f(-return void fHp(const HP if(x.data0 = f(-/ 大整數(shù)的減void Subtract(const HP x, const HP y, HP i, j; HPa=x; HPb=/符號修減負改為加b.data0 = return ;elseifa.data01&

13、b.data00a負b正,則改為負的a.data0 = b.data0 = (*c).data0 = a.data0 = b.data0 = /else a 和b 都是正,則直接往下運行即可,不/大小/else a 和b 都是正,則直接往下運行即可,不/大小判/位數(shù)不if(b.len(*c).data0 = return ;elseif(a.len=i = a.len; while(i=1)/位數(shù)相if(a.datai (*c).data0 = for (i=1,j=0; i=a.len; / j 表示是否要進行(*c).datai = a.datai - if(i=b.len)(*c).da

14、tai-=if (*c).datai 1 &while (*c).len 1 & !(*c).data(*c).len) (*c).len-/ 大整數(shù)的加HPa=x; HPb=/符號判if(a.data0=1)&(b.data0=1) (*c).data0 = 1;else if(a.data0 = a.data0 = else if(b.data0 = b.data0 = (*c).data1 = /初始值必須/ 大整數(shù)a,b的加法操作和結(jié)果c的進位操for (i=1; i=a.len | i=b.len | (*c).datai; if(i=a.len)(*c).datai+=if(i=b

15、.len)(*c).datai+=(*c).datai+1 = (*c).datai/10;/這句話把i+1的值置0或者把(*c).datai %= 退出循環(huán)到原因是c.si=0,所以取前一位 (*c).len = i-1;if*c).len0(*c).len1;/對于ab0時,則c應該輸0帶符號的大整數(shù)的十進制左右代#include #define MAXLEN typedef struct void fHp(const HP void RightShift(HP voidLeftShift(HP帶符號的大整數(shù)的十進制左右代#include #define MAXLEN typedef st

16、ruct void fHp(const HP void RightShift(HP voidLeftShift(HPHPa.s3=6; a.s2=2; a.s1=a.s0=a.len=return void fHp(const HP if(x.s0=f(-/ 十進位右void RightShift(HP for (i=1; i=(*x).len-k; void RightShift(HP for (i=1; i=(*x).len-k; (*x).len -= k;if(*x).len =1; i-for (i=k; i=1; i-)(*x).len += k;不帶符號的大整數(shù)乘代#includ

17、e #define MAXLEN typedef struct void fHp(const HP voidMulti(constHPa,constHPb,HP#define MAXLEN typedef struct void fHp(const HP voidMulti(constHPa,constHPb,HPHPa.s3=9; a.s2=9; a.s1=b.s3=9; b.s2=9; b.s1=a.s0=b.s0=a.len=b.len=return void fHp(const HP f(-/ 大整數(shù)的乘voidMulti(constHPa,constHPb,HPi,對乘法結(jié)果賦初值,

18、以方便之后的+=運(*c).len=a.len+for(i=1;i=(*c).len;i+)(*c).si=0; for (i=1; i=a.len; i+)for (j=1; j=b.len; j+) / 運算結(jié)果進for (i=1; i(*c).len; i+) (*c).si+1 += (*c).si/10; (*c).si %= / 確保不for (i=1; i1 & !(*c).si) i-(*c).len=不帶符號的大整數(shù)除用減法和除法之間的轉(zhuǎn)換關(guān)系代#include #define MAXLEN typedef struct void fHp(const HP pare(const HP x, const HP voidDivide(constHPa,constHPb,HP*c,HPHPa.

溫馨提示

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

評論

0/150

提交評論