目前共有1篇帖子。 內容轉換:不轉換▼
 
點擊 回復
348 0
【程序】C++中的大数进位加法
一派護法 十九級
1樓 發表于:2016-3-3 23:29
注意num1, num2, newnum中的数位都是倒着写的。比如1234要写成4321,方便对其数位。
【代码】
#include <iostream>

using namespace std;

int main(void)
{
    char *num1 = "982799999";
    char *num2 = "4563";
    char newnum[20];
    char *pnum = newnum;
    bool carry = false;
    memset(newnum, '0', sizeof(newnum));
    memcpy(newnum, num1, strlen(num1));
    while (*num2 != '\0')
    {
        if (carry)
        {
            (*pnum)++;
            carry = false;
        }
        *pnum += *num2 - '0';
        if (*pnum > '9')
        {
            *pnum -= 10;
            carry = true;
        }
        num2++;
        pnum++;
    }
    while (carry)
    {
        (*pnum)++;
        if (*pnum > '9')
            *pnum -= 10;
        else
            carry = false;
        pnum++;
    }
    *pnum = '\0';
    cout << newnum << endl;
    system("pause");
    return 0;
}
【运行结果】
3490000001

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:348 回複數:0
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-3-3 23:29
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。