大數加法 C實現想法

2021-10-03 17:22:01 字數 1257 閱讀 9252

大數加法實現採用陣列來完成,網上常見的**在定義變數的時候常採用這種形式

int in1[n]

,in2[n]

,ans[n]

;int in1_size,in2_size,ans_size;

int i,j,k;

如這位兄台的c語言大數加法

我在實現時使用結構體將三個陣列重新做封裝,size指向陣列的實際有效位數,而pos指向本次操作的物理位置。變數定義如下:

struct

in1,in2,ans;

//這樣子定義實際上限制了靈活性

如假如我想在讀出in1陣列的第乙個元素,那麼我先得將pos指向0,之後在通過這樣的方式去操作in1.dat[in1.pos]。又如我若是要遍歷out陣列,則採用如下方式:

for

(in1.pos=

0;in1.pos)putchar

(in1.dat[in1.pos]

);

這種方式說實話,不見得能將**簡化,甚至可能都不能將思路簡化,但是還挺有意思的:我在我重新定義的世界座標系中去code,這種思路可以見我的另乙個部落格貪吃蛇 c實現細節。所有的**如下:所有的**如下:

#include

#include

#define n 100

struct

in1,in2,ans;

//這樣子定義實際上限制了靈活性

int high=0;

//最高位進製與否

intmain()

in1.pos--

; in2.pos--

; ans.pos--

;//全部指向下一位,因為還可能沒有處理完整

if(in1.pos!=in2.pos)

}else}}

//這樣子處理雖然很巧妙,但是很容易造成以往

ans.pos=0;

high=flag;

for(

;ans.pos) ans.dat[ans.pos]+=

48;if(high==1)

ans.dat[ans.size]

='\0'

;//將char陣列轉為str

puts

(ans.dat)

;return0;

}

大數加法(C 實現)

問題 1513 藍橋杯 演算法提高vip 大數加法 題目描述 輸入兩個正整數a,b,輸出a b的值。輸入兩行,第一行a,第二行b。a和b的長度均小於1000位。輸出一行,a b的值。樣例輸入 4 2樣例輸出 6 includeusing namespace std typedef long long...

大數乘法 大數加法實現

include include include include include include include include using namespace std 實現兩個數的加法 判斷乙個字串是否為有效的數 bool isvalidnumber const string s if 1 len ...

C 實現大數加法(正整數)

所有學c和c加加的都會碰見這個問題,當輸入的數超過了整型變數的最大值,計算機將無法正常計算數的加法和減法了,這時候我們只能將輸入的數當作字串來處理,可以用陣列,但是由於我們輸入的數長度是未知的,用string類物件就可以很好的解決這個問題 include include include using ...