C語言實現超大數相加

2021-08-21 05:33:08 字數 1555 閱讀 7887

思路:(不考慮輸入非法的情況)

超大數無法使用char、int、float、double進行資料儲存,所以使用陣列進行資料儲存,且資料為ascii碼的形式

#include #include #include #define max 256

#define carry_flag ('9' + 1)

/** 將輸入的大數存放起來

* */

void inputbignumber(char *bignumberstring)}/*

* 列印計算的求和結果

* */

void bignumberprint(char *result, int result_len)

} printf("%d", *(result + i) - '0');

i++;

} printf("\n");}/*

* 進行兩個大數的加法運算,並對加過進行儲存

* */

void bignumbersum(char *bignumberstring1, int len1, char *bignumberstring2, int len2, char *result)

if (len2 < 0)

*(result + c) = (*(bignumberstring1 + len1) - '0') + (*(bignumberstring2 + len2) - '0') + '0' + flag;

if (*(result + c) >= carry_flag)

else

len1--;

len2--;

c--;

} if (flag == 1)

else }

int main(int argc, char const *argv)

; char bignumberstring2[max] = ;

char result[max + 1] = ;

int bignumberstring1_len1 = 0;

int bignumberstring2_len2 = 0;

int result_len = 0;

printf("請輸入第乙個數:");

inputbignumber(bignumberstring1);

printf("請輸入第二個數:");

inputbignumber(bignumberstring2);

bignumberstring1_len1 = strlen(bignumberstring1);

bignumberstring2_len2 = strlen(bignumberstring2);

bignumbersum(bignumberstring1, bignumberstring1_len1, bignumberstring2, bignumberstring2_len2, result);

result_len = strlen(result);

bignumberprint(result, result_len);

return 0;

}

c語言實現大數相加

文章 兩個大數我們可以用陣列來儲存,然後在陣列中逐位進行相加,再判斷該位相加後是否需要進製,為了方便計算,我們將數字的低位放在陣列的前面,高位放在後面。捕獲.jpg include includeint main n2 10000 int result 10001 t1 10000 t2 10000...

c語言實現兩個超大數的相加(超長資料)

這幾天無聊,突然想起來,大學當時有個問題困擾著我 兩個超大的數怎麼儲存和相加呢,計算機的整形32位的最大也就4294967296,超過這個數就計算不了了哇 然後就想動手實踐一下 思路 1.超長資料怎麼存呢。腦子一拍,巨長的數肯定用字元陣列來存哇,沒毛病。2.要怎麼運算呢。我想的是,乙個數最大是429...

C 超大數相加,大神錯過

include include using namespace std 宣告超大數類 class bignum bignum bignum operator bignum bignum this psznnum length 0 return this 預設建構函式 bignum bignum 建構...