本篇介紹大整數相減(兩個正數相減)
與大整數加法運算相比,減法運算稍微複雜了些,因為要考慮當結果為負數時候的情況。根據減法運算法則可以得出兩個整數相減為正數的情況。這樣想來,只需要在兩個正的大整數相減前比較大小即可得出另外一種情況。例:
所以最終功能的實現由以下部分組成:
逆序存放數字(對齊整數的個位,便於計算)
判斷兩個整數大小(確定最終結果為正數還是負數)
用陣列計算結果
根據兩個整數的大小輸出結果
#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 ...