精华内容
下载资源
问答
  • 大整数加法

    2016-07-26 23:50:12
    大整数加法

           实现两个大整数相加的方法很简单,就是模拟小学生列竖式做加法,从个位开始逐位相加,超过或达到10则进位,程序中使用变量carry存储1或0。然后逐位相加,相加的结果直接存放在result中。要注意处理进位。
    STL代码如下:

    #include <iostream>
    #include <list>
    using namespace std;
    
    int main()
    {
        list<int> l1;//输入1
        list<int> l2;//输入2
        list<int> result;//结果
        int carry = 0;//进位
    
        l1.push_back(2);
        l1.push_back(4);
        l1.push_back(3);
        l2.push_back(4);
        l2.push_back(6);
        l2.push_back(5);
        l2.push_back(1);
    
        list<int>::iterator iter1, iter2;
        iter1 = l1.begin();
        iter2 = l2.begin();
        //计算加法,使用一个进位carry存储
        while(iter1!=l1.end() && iter2!=l2.end())
        {
            int value = *iter1 + *iter2 + carry;
            carry = value / 10;
            result.push_back( value % 10);
    
            iter1++;
            iter2++;
        }
    
        //两个输入长度不同时,将超出的部分直接赋值给结果
        while(iter1!=l1.end())
        {
            result.push_back(*iter1);
            iter1++;
        }
    
        while(iter2!=l2.end())
        {
            result.push_back(*iter2);
            iter2++;
        }
    
        //打印
        cout << "输入1:";
        for(list<int>::reverse_iterator iter1=l1.rbegin();
            iter1 != l1.rend();
            ++iter1)
        {
            cout << *iter1;
        }
        cout << endl << "输入2:";
        for(list<int>::reverse_iterator iter2=l2.rbegin();
            iter2 != l2.rend();
            ++iter2)
        {
            cout << *iter2;
        }
        cout << endl << "结果:";
        list<int>::reverse_iterator iter_res;
        for(iter_res=result.rbegin();
            iter_res != result.rend();
            ++iter_res)
        {
            cout << *iter_res;
        }
        cout << endl;
    
        system("pause");
        return 0;
    }
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,972
精华内容 1,188
关键字:

大整数加法