大整數減法

2021-09-10 14:48:26 字數 1012 閱讀 4888

本篇介紹大整數相減(兩個正數相減)

與大整數加法運算相比,減法運算稍微複雜了些,因為要考慮當結果為負數時候的情況。根據減法運算法則可以得出兩個整數相減為正數的情況。這樣想來,只需要在兩個正的大整數相減前比較大小即可得出另外一種情況。例:

所以最終功能的實現由以下部分組成:

逆序存放數字(對齊整數的個位,便於計算)

判斷兩個整數大小(確定最終結果為正數還是負數)

用陣列計算結果

根據兩個整數的大小輸出結果

#include #include #include using namespace std;

void swap(int a, int len_a, int b, int len_b)

}int main()

; int b[1001] = ;

string a, b;

cin >> a >> b;

int len1, len2;

len1 = a.length();

len2 = b.length();

int flag = 0;//標記輸出結果為正或是負

for (int i = len1 - 1, k = 0; i != -1; i--)//逆序存放

for (int i = len2 - 1, k = 0; i != -1; i--)

if (len1 < len2)//比較大小

else if (len1 == len2)

} }

int down = 0,max = len1 >= len2 ? len1 : len2;

for (int i = 0; i < max; i++)//模擬減法 }

if (flag)

int i;

for (i = max - 1; a[i] == 0; i--);//忽略空格

for (;i >= 0; i--)

return 0;

}

大整數 減法

本文主要給出大數減法的一般思路。關於大數的一般性闡述可以參看大整數 加法 demo這篇部落格。基本來說,還是大整數的那套思路。要進行處理的數字,超過了計算機語言所能提供型別的最大範圍。只能自己寫陣列儲存每一位數字。由於不是內建型別,所以沒有相應操作的支援。只能自己寫,人工模擬減法操作。當然,具體寫的...

大整數減法

include stdafx.h include substr.h includeusing namespace std define max lenth 201 void sub int len,int bignuma,int bignumb printf d n 10 bignuma 0 els...

大整數減法

求兩個大的正整數相減的差。共2行,第1行是被減數a,第2行是減數b a b 每個大整數不超過200位,不會有多餘的前導零。一行,即所求的差。跟加法一樣,從後向前按位減法,不夠減則向前借位。include include define max 202 最高位為200 int main for j 0 ...