大數加法之C語言函式法(只有正數版)

2022-07-12 11:21:16 字數 1197 閱讀 4613

由於某些原因,我於今天2017-4-19將我的博文搬到了,以後我就在這裡扎根了。

之前想過在部落格寫文章方便日後複習,但一直未能實現,所以,現在這篇是我個人人生中第一篇部落格,所以寫部落格完全沒經驗,可能會有些囉嗦,讀者將就著看吧,哈哈。由於本人還是學生,所以有理解不對的地方,請各位大神指出,讓我,讓後面看到此文章的人共同進步,謝謝,本文適合新手看,個人覺得思路挺清晰,大神可飄過,勿噴。

大數加法,可以模擬小學的加法,主要是幾步:由字元型轉換成整形陣列,反轉相加,處理進製情況,再轉換回字元型輸出答案。廢話不多說了,**如下:

# include# includechar * sum(char *a,char*b)//對c語言來說返回乙個字元指標,因為我們的結果是以字串形式輸出

;//用整形陣列儲存數字,記得清零

char c[1000];//這將是我們用來輸出的陣列,後面直接返回陣列名 c即可

int i,j,maxlen,d;

int la=strlen(a),lb=strlen(b);

la>lb?maxlen=la:maxlen=lb;//這裡是要找出兩個數字的最高位

for(j=la-1; j>=0; j--)//將字元轉換成數字並反轉存進整形陣列

s[la-1-j]+=a[j]-'0';

for(j=lb-1; j>=0; j--)//同上

s[lb-1-j]+=b[j]-'0';

for(i=0,d=0; i0)//處理最高位

s[maxlen++]+=d;

for(i=maxlen-1; i>=0; i--)//再將整形陣列 反轉轉換為字元陣列

c[maxlen-1-i]=s[i]+'0';

c[maxlen]='\0';//最後面加上結束符

return c;//返回字元指標

}int main(void)

return 0;

}

以上就是鄙人之見測試效果如下:

大數 加法 c語言

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

C語言大數加法

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

C語言大數加法學習 複習

大數加法 為什麼c語言會有大數加法這個專門的概念?難道大數不是直接相加就行了嗎?其實是因為c語言中定義的整數型都是有位數限制的。比如int型的取值範圍為 2147483648 2147483647,即使是long long int的取值範圍也只是 922 3372 0368 5477 5808 92...