思路:(不考慮輸入非法的情況)
超大數無法使用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 建構...