hevv 发表于 2011-4-18 01:31:51

用数组模拟加法运算

本帖最后由 hevv 于 2011-4-18 01:34 编辑

#include <iostream>

int Num;
int nu;
int sum;
int init(int *);

using namespace std;
int main()
{
        int digit,count;
        int i,j;
        i=init(Num);                //初始化数组,返回该数的位数!
        j=init(nu);

        count=digit=(i>j)?i:j;
        int carry=0;                   //记录进位
        int temp;

        while(j && i )
        {
                temp=(Num+nu+carry);               //数的个位是该数组下表做大的!
                sum=temp%10;                     
                carry=temp/10;
        }

        while(j)
        {
                temp=nu+carry;
                sum=temp%10;
                carry=temp/10;
        }
        while(i)
        {
                temp=Num+carry;
                sum=temp%10;
                carry=temp/10;

        }
    sum=carry;                                 
        i=carry?0:1;                        //如果两数相加的位数超过原来书的最大位数!
                                       //则输出为sum数组从o下标开始输出!
                                     //否则则输出为sum数组从1下标开始输出!
         for(i;i<=count;i++)
                     cout<<sum;
        cout<<endl;

       
        return 0;
}

int init(int *a)
{
        char ch;
        int i=1;
        cin>>ch;
        while(ch!='\n'&& i<80)
        {
                a=(int)ch-48;             //(int)进行强制转换,数字的ASC比数字本身大48!
                cin.get(ch);
        }

        return --i;

}

小甲鱼 发表于 2011-4-18 10:49:48

{:5_108:}大数运算~

dalaozhao 发表于 2015-5-12 17:00:47

我来学习学习啊
页: [1]
查看完整版本: 用数组模拟加法运算