大整數的四則運算

2021-09-26 19:11:50 字數 2013 閱讀 7244

由小學時候的加法運算可以歸納出對其中一位進行加法的步驟:將該位上的兩個數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。

高精度加法的做法與此完全相同,可以直接來看實現的**:

程式**:

#include#include//定義乙個結構體儲存大整數 

struct bign

};//將整數轉換為bign

bign change(char str)

}int main()

執行結果:

由小學時候的減法運算同樣可以得到乙個很簡練的步驟:對某一步,比較被減位和減位,如果不夠減,則令被減位的高位減1、被減位加10再進行減法,如果夠減,則直接減。最後一步要注意減法後高位可能有多餘的0,要忽視它們,但也要保證結果至少有一位數

程式**:

#include#include//定義乙個結構體儲存大整數 

struct bign

};//將整數轉換為bign

bign change(char str)

return c;

}//輸出bign

void print(bign a)

}int main()

執行結果:

乘法的某一步來說是這麼乙個步驟:取 bign的某位與int型整體相乘,再與進製相加,所得結果的個位數作為該位結果,高位部分作為新的進製。

程式**:

#include#include//定義乙個結構體儲存大整數 

struct bign

};//將整數轉換為bign

bign change(char str)

}int main()

執行結果:

由小學除法歸納其中某一步的步驟:上一步的餘數乘以10加上該步的位,得到該步臨時的被除數,將其與除數比較:如果不夠除,則該位的商為0;如果夠除,則商即為對應的商:餘數即為對應的餘數。最後一步要注意減法後高位可能有多餘的0,要忽視它們,但也要保證結果至少有一位數

程式**:

#include#include//定義乙個結構體儲存大整數 

struct bign

};//將整數轉換為bign

bign change(char str)

return c;

}//輸出bign

void print(bign a)

printf("\n");

}int main()

執行結果:

在上述**中,考慮到函式每次只能返回乙個資料,而很多題目裡面會經常要求得到餘數,因此把餘數寫成「引用」的形式直接作為引數傳入,或是把r設成全域性變數。引用作用是在函式中可以視作直接對原變數進行修改,而不像普通函式引數那樣,在函式中的修改不影響原變數的值。這樣當函式結束時,r的值就是最終的餘數。

大整數四則運算

儲存方式 規定 整數的高位儲存在陣列的高位,整數的低位儲存在陣列的低位。例如 235813,則d 0 3,d 1 1,d 2 8.此方式以此類推。但注意 通常輸入為字串str 0 2 str 1 3 str 2 5 讀入之後需要反轉一下。加法運算 模板 include include struct ...

大整數四則運算

電腦可以處理很大的數。但是更大的數字運算由於資料型別占有的有限並不能表示出來,所以需要對很大的數字進行大整數處理,光是聽著就感覺令人心潮澎湃呢。核心思想 陣列存數,乙個單元存一位 下面是大整數儲存,比較的模板 struct bign bign change char str return a 比較兩...

大整數的四則運算

int 表示的資料範圍有限,當涉及大整數的運算時候,我們就只能借助陣列來儲存,借助陣列就依靠手工加減乘除,就小學學的那種來運算,然後乙個個存入。先來個結構體bign,含有乙個陣列和陣列長度。我們用字串讀入的數字可以存入bign。頭尾顛倒存入,因為模擬手工加減乘這三個都是從低位開始的,顛倒後方便操作 ...