高精度減法

2021-10-25 07:16:27 字數 1481 閱讀 1391

高精度減法,本文選用c++語言,包括一些c語言的庫。

儲存高精度的數字,必須使用構造資料型別。本文選擇陣列。

為了方便計算,引入cstring、cstdio、cstdlib。

char型別陣列儲存被減數、減數、差

char s1[10100],s2[10100],s3[10100];
比較被減數與減數的大小,區分我們的符號是正是負。

需要:返回值為bool型別的compare比較函式,形參char型別的陣列str1,str2

1.準備乙個compare函式

bool compare(char str1, char str2)
2.比較有兩種

第一種:位數多少比較

int len1=strlen(str1);

int len2=strlen(str2);

比較len1與len2

兩種結果,1.位數相同,2位數不同。

第一種情況,位數相同,則進入第二種比較

第二種:對應位上的數大小比較

從高位到低位進行迴圈,逐一比較。

int len1=strlen(str1);

int len2=strlen(str2);

// 位數比較

if (len1!=len2) return len1>len2;

for (int i = 0; i < len1; ++i)

3.比較結果的處理

關於被減數與減數是否交換,以及符號的問題

建立全域性變數flag記錄符號

int flag=0;
借助第三個char陣列進行變數交換,借助c語言庫中函式strcpy進行交換

//    大小比較,如果s1重新獲取減數與被減數的位數大小

char型別轉換int型別-『0』

int la,lb;

la=strlen(s1);

lb=strlen(s2);

// cout << "la=" << la << endl;

// cout << "lb=" << lb << endl;

//// cout << "s1=" << s1 << endl;

// cout << "s2=" << s2 << endl;

for (int i = 0; i < la; ++i)

for (int j = 0; j < lb; ++j)

lc=max(la,lb);

for (int k = 1; k <= lc; ++k)

高精度減法

題目描述 高精度減法 輸入輸出格式 輸入格式 兩個數 第二個可能比第乙個大 輸出格式 結果 是負數要輸出負號 輸入輸出樣例 輸入樣例 1 2 1 輸出樣例 1 1說明 這也沒什麼好說的,沒什麼特別的要求,就是乙個普普通通的高精減。程式如下 const max 500 var s integer a,...

高精度減法

description 輸入兩個整數a和b,輸出這兩個整數的差。a和b都不超過100位。input 輸入包括兩行,第一行為乙個非負整數a 被減數 第二行為乙個非負整數b 減數 兩個整數都不超過100位,兩數的最高位都不是0。output 輸出一行,表示a b的值。sample input 99999...

高精度減法?!

高精減 嗯輸入就不再講一遍了。儲存和之前是一樣的,倒序儲存。減法需要借位,所以解決減法借位是關鍵。方法如下 if a i a i 1 向上一位借一做十 a i 10 c i a i b i 逐位相減這樣就可以處理借位問題。當然,在減法中還有乙個需要處理的問題,當然這個問題很重要 減法中有被減數和減數...