設置 | 登錄 | 註冊

作者共發了1篇帖子。

【程序】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

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。