鱼C论坛

 找回密码
 立即注册
查看: 2325|回复: 2

用数组模拟加法运算

[复制链接]
发表于 2011-4-18 01:31:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

#include <iostream>

int Num[80];
int nu[80];
int sum[81];
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[i--]+nu[j--]+carry);               //数的个位是该数组下表做大的!
                sum[digit--]=temp%10;                     
                carry=temp/10;
        }

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

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

       
        return 0;
}

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

        return --i;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-18 10:49:48 | 显示全部楼层
大数运算~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2015-5-12 17:00:47 | 显示全部楼层
我来学习学习啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 23:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表