C語言大數加法學習 複習

2021-10-22 18:33:03 字數 1394 閱讀 4186

大數加法

為什麼c語言會有大數加法這個專門的概念?

難道大數不是直接相加就行了嗎?

其實是因為c語言中定義的整數型都是有位數限制的。比如int型的取值範圍為-2147483648~+2147483647,即使是long long int的取值範圍也只是-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807。

這樣就導致如果數字超過這個範圍就會出錯,因此才有大數加法這個概念。

為了解決數字相加過大導致的錯誤,我們在計算大數相加的時候不使用整數型來進行計算。而是使用字串陣列來進行計算!

完整**如下:

初學的時候看起可能會有點難度,但是堅持下去就會有很大的收穫。

#include

#include

#define n 10000

//定義陣列的長度,這個長度要大於結果的長度

intmain()

,sz_2[n]

=,sz[n]=;

//初始化

int n,m,z;

int i;

printf

("請輸入第乙個數\n");

gets

(sz_1)

;printf

("請輸入第二個數\n");

gets

(sz_2)

; n=

strlen

(sz_1)

;//計算開始的時候兩數的長度

m=strlen

(sz_2)

; z=n>m?n:m;

// z++

;//這裡的z++是為了防止結果進製導致不夠

for(i=

0;i(n>m)

//下面把大的位直接放到陣列裡

}else

}for

(i=z-

1;i>

0;i--)}

if(sz[0]

!=0) sz[z]

='\0';}

else

sz[z-1]

='\0';}

printf

("兩數相加:\n");

puts

(sz)

;//輸出結果驗證

return0;

}

**執行結果如下:

總結:大數加法看上去有點難度,但是其實很簡單,只需要你認真看完!

個人心得:興趣與成就感是我們進步的最大動力!希望可以寫自己複習看起舒適,別人一下子就可以看懂的部落格。

大數 加法 c語言

最近遇到乙個關於大數的問題頓時感覺好方,決定系統學一下大數。注意 關於大數問題,由於陣列不好界定輸入數的大小 陣列的長度 因此主要思想就是先用字串輸入儲存在字串陣列中,再逆序存入整形陣列進行最後逐位運算。剛開始通過部落格寫的 思路 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同...

C語言大數加法

當計算兩個較大的數的和時,可能c語言中的型別諸如int,long,long long型都無法表示時,此時應該換一種思維,將數看成是字串,採用字元陣列的方法進行儲存與運算。同時,應該注意到字元陣列的儲存方式,在字元陣列中,低位位址存放的是字元陣列的高位,所以執行加法時,應該從陣列下標大的位址開始加。以...

c 大數加法

在c 中,我們經常需要表示整數。但是,c 的基本資料型別中,最大的long也只能表示 9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之間的數。貨幣型別也不是無限大。如果我們需要表示更大的數,就需要用到一定的演算法來完成。這次,我和大家一起討...