大數相加 相乘

2021-06-08 22:23:21 字數 1050 閱讀 4304

用字串儲存兩個大數。 把加法分解成: 一,同一位上為 (a+b)%10 二,進製(a+b)/10 ,三,把第一數+進製

感覺是遞迴了。但可以用迴圈在代替。

大數相乘也差不多,第二數的每一位數都與第乙個數每一位相乘,然後相加起來.

以下我們假設兩個字串裡都是數字,之里不做判斷了.

為了解題方便,我還把數字都移到陣列的右端,方便相加.不足是會浪費一些時間

#include #include #include #define maxsize 20

//判斷 字串中是否全是0

int iszero(const char* s)

return 1;

}//假設len >= strlen(src)+1

//把src中的字串把到dest的右端,前面補0

char* rcpy_addzero(char *dest, int len, const char *src)

strncpy(dest + len - srclen - 1, src, srclen);

return dest;

}//我們假設兩個數都不會超過maxsize-2位(兩陣列的長度不超過maxsize-1),ps:最後一位用來放'\0',第一位用來放 進製

//只限兩個正整數

char* bignumadd(const char* a, const char *b,char *result)

else

}s2[i-1]='0';

} strcpy(result,s1);

return result;

}//左移n位,補0

void leftshift(char* s,int n)

bignumadd(sum,carry,sum);

bignumadd(sum,result,result);

leftshift(s1,1); //左移一位

} if(isnegative) result[0]='-';

return result;

}int main(void)

大數相乘 大數相加

大數相乘 大數相乘 1 include includeint main int ans i while lb 0 int cnt j for i 0 i 0 i if e i break 去除前面多餘的0 if i 1 else 當結果是0的時候 printf 0 printf n return 0...

大數相加和大數相乘

大數相加 從後向前變數相加的字串,並將當前位的數轉為整型進行加法操作,並判斷是否有進製,儲存進製,以便進行下一次的操作。大數相加 char add char str1,char str2 else ans max sum 0 第乙個字串還有剩餘 while i 0 第二個字串還有剩餘 while j...

大數相加,大數相乘

題目 大數相加鏈結 思路 為了方便兩個字串相加,我們將短的字串,前面補0,最重要的一點是我們需要設定進製標誌ok class solution for int i size num2 i for int i longsize 1 i 0 i else ret c ret if ok 1 return...