大數相加方法 2

2021-07-11 05:38:50 字數 2020 閱讀 5857

大數相加的另外一種思路

1;這個思路是我一學長告訴我的,然而我因為有個語法知識沒用好導致初始化0(數字零)沒成功,後來還是學長幫我敲完的,原來那個歸零要轉化為int型別的陣列來完成的,這項工作。看來我需要去問問度娘

memset函式的使用了。

memset函式的使用,原型為void *memset(void *buffer, int c, int count)

buffer:為指標或是陣列,

c:是賦給buffer的值,

count:是buffer的長度.

對字串使用,使用該函式來初始化,此時的0是空零』\0』

對int陣列使用,則這裡的0就是數字0了;

不說閒話了,先介紹一下這個思路。

2;我之前的部落格就說過以字串輸入,那麼高位就是陣列前面的數,因此我們的運算都是從後面開始往前面進行運算的,然而這種方法就是從前面開始運算的,當然那必須還要一項工作就是反向也就將字串掉

頭,這裡可以用乙個strrev就輕鬆完成了,

strrev的使用情況,

標頭檔案是#include

功能:把字串s的所有字元的順序顛倒過來(不包括空字元null);

說明:返回指向顛倒順序後的字串指標。

我當時就出錯,我一直以為要用乙個指標去接收這個掉頭了的位址,後面就要用到指標所以始終報錯,然而是我沒記清,其實這個函式沒有必要去用新的去接收它,它其實就是原字串的位址,也就說strrev(a);之後我們再繼續使用a,這個a字串就是已經顛倒了的;

返回指向顛倒順序後的字串指標。這個指標表示的也就是原來的位址;

#include

#include

int main()

, *aa;

printf("%p\n",a);

printf("%s\n",a);

aa = strrev(a);

printf("%p\n",aa);

printf("%s\n",a);

return

0;}

輸出的兩個位址值是相同的。很好的解釋了上面。

這些問題都解決了,再對這種方法就好敲多了。感覺都可以直接擺**了,在**裡面去理解了。

先看一下我那個出來bug的**吧,隨後就擺出我學長打的**;

//輸入兩個正的大數,輸出前乙個加後乙個的結果;  

這個是出了問題的**;

#include

#include

int main()

; char a[1004]=,b[1004]=;

scanf("%d",&n);

while(n--)

jws = 0;

for(i = 0; i < max; i++)

else jws = 0;

bj[i] = mwh;

// printf("%d\n",bj[i]);

}if(jws == 1)

for(i--; i != -1; i--)

printf("\n");

}return

0 ;}

接下來的才是我學長打的**;他用的是c++;並且我也寫了一點注釋;

#include

#include

#include

using

namespace

std;

int n;

int maxi(int aaa,int bbb)

int main()

for(int i=strlen(b)-1;i>=0;i--)

int maxn=maxi(re,rel);

for(int i=0;i//相加,後面單獨來同一進製;

for(int i=0;i1;i++)//統一來進製 ;

}printf("%d",cc[maxn-1]);

for(int i=maxn-2;i>=0;i--)

大數相乘 大數相加

大數相乘 大數相乘 1 include includeint main int ans i while lb 0 int cnt j for i 0 i 0 i if e i break 去除前面多餘的0 if i 1 else 當結果是0的時候 printf 0 printf n return 0...

list 相加 大數相加

演算法流程 1 大數可能超出任何一種整數型別,會引發溢位問題,所以用字串的格式儲存字串a,b 2 獲取字串a的長度為alen,字串b的長度為blen 3 比較alen和blen的大小,用maxlen儲存更大值。4 建立陣列aarr,大小為maxlen,儲存字串a每一位上的值 5 建立陣列barr,大...

大數相加(JAVA)

類似於acm1003,當兩個數特別大的時候,比如數百位長,這個時間沒法用int,long等基本資料型別來表示,這個時候我們要把它轉化為字串相加,具體實現如下 static void aplusb stringbuilder s1,stringbuilder s2 for int i l1 l2 1 ...