用字串儲存兩個大數。 把加法分解成: 一,同一位上為 (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...