大型整數運算 加法, 減法, 乘法

2021-05-27 22:32:12 字數 1342 閱讀 9956

from:

用int數模仿真整數的每乙個位,大於10的要進製,負數要借位。

#include #include #define max_digit 500

//大數運算:加法

int multiply(int *a,int *b,int *&result);

//大數運算:乘法

int add(int *a,int *b,int *&result);

//大數運算:減法

int sub(int *a,int *b,int *&result);

//逐位調整大數,如result為11 9 22 -3 -2調整為:1 0 3 9 -3,然後再對符號提公升到最高位: 9 9 6 0 2... ... -1

//表示大數的值為-20699

void ajustencodearray(int *&result,unsigned int imaxnum);

//輸出大數

void printbignum(int *result);

//把個位在高位的字元陣列轉為個位在低位(下標0)的整型陣列

void carray2revdigitarray(char *carray,int *digitarray,unsigned int inum);

//大數運算:加法

int add(int *a,int *b,int *&result)

int i=0,j=0;

//初始化result陣列

for(i=0;i=0;--i)

} //從低位開始往上調整,規則:大於10的正數要進製,負數要借位

for(i=0;i0)

else if(result[i]<0)

} //若有效最高位為負數,需要對負號進行提公升,就是對高位與餘下低位進行一次減法

if(result[inumflag]<0)

; iminuend[inumflag] = iweight; //被減數

result[inumflag] = 0; //構造減數

for(i=0;i=0;--i)

printf("\n");

}

void carray2revdigitarray(char *carray,int *digitarray,unsigned int inum)

{ int i = 0;

unsigned int ilen = strlen(carray);

//初始化digitarray

for(i=0; i

大整數運算之 大整數加法 減法 乘法

其實大整數的問題都是在像我們打草稿的時候列豎式一樣的,不要告訴我你不知道什麼叫豎式 其實我開始也不知道它叫這個名字 所謂豎式,就是你打草稿算算術的方法,小學知識 比如你寫 11 9 11 9 20數a,b,求和,求差 數的長度不超過1000 貼個 先輸入乙個數,代表資料的組數n,然後輸入n組a b ...

c 大整數加法 減法 乘法

大整數加法 大整數減法 大整數乘法 大整數除法 還未寫 大整數的加法 先對資料進行預處理是兩個大整數的位數相等,位數少的那個數在高位補0,使兩數的位數相等,便於計算資料的進製,只需要在函式呼叫的結尾檢查一下最高為是否存在進製的情況,如果需要進製則只需要在最後將進製的數加入到返回值中。加法是對兩個數從...

大數加法 減法 乘法 除法

大數加法 實現 include include typedef char str 1000 void printnum int sum int len 輸出 void add str a int len a str b int len b 計算a b 只能 while len a 1 if c 0 ...