C 資料結構之高精度整數

2021-08-20 02:38:16 字數 869 閱讀 4018

當我們遇到一些數值非常巨大的整數以至於我們不能用任何一種資料型別來儲存他的值,這個時候我們要考慮使用乙個結構體來儲存這個整數,並完成對其運算的實現。

1.實現乙個加法器。使其能夠輸出a+b的值

輸入包括兩個數a和b,並且都不超過1000位,輸出a+b的值

樣例輸入:

2 610000000000  1000000000000000 

樣例輸出:

81000010000000000 

思路:定義乙個結構體來儲存乙個高精度整數

struct biginteger

digit陣列儲存大整數中每若干位數字,這裡使用每4位一組。size表示digit陣列中第乙個還沒有使用的陣列單元。以整數123456789為例,gigit[0]=6789,digit[1]=2345,digit[2]=1,size=3。用**模擬加法的運算法則,按照從低到高相加並加上來自低位的進製的規則進行運算。

#include#includestruct biginteger//高精度整數結構體 

void set(char str)//從字串中提取整數

}} void output()//將高精度整數輸出

printf("\n");

} biginteger operator +(const biginteger &a) const//加法運算子

if(carry!=0)//計算結束後若高位有進製

return ret;

}} a,b,c;

char str1[1002],str2[1002];

int main()

return 0;

}

C 之高精度算發

前言 由於計算機運算是有模運算,資料範圍的表示有一定限制,如整型int c 中int 與long相同 表達範圍是 2 31 2 31 1 unsigned long 無符號整數 是 0 2 32 1 都約為幾十億.如果採用實數型,則能儲存最大的double只能提供15 16位的有效數字,即只能精確表...

高精度 C 中大整數運算

cin a b for i a.size 1 i 0 i for i b.size 1 i 0 i include include using namespace std const int n 1e6 10 10防止出現邊界問題 vector int add vector int a,vector...

大整數加法 高精度訓練 C

求兩個不超過200位的非負整數的和。輸入有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。輸出一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。樣例輸入 22222222222222222222 33333333333333333333 樣例...