| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2778 人关注过本帖, 1 人收藏
标题:自己写了一个大数加法,请各位个点意见
取消只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏(1)
已结贴  问题点数:20 回复次数:3 
自己写了一个大数加法,请各位个点意见
#include <iostream>
using namespace std;

int a[1000],b[1000],result[1000];
int main()
{
    int t,i=1;
    while(cin>>t)
        a[i++]=t;

    cin.clear();
    cin.sync();
   
    int j=1;
    while(cin>>t)
        b[j++]=t;
   
    int k,flag;
    if(i>j)
    {
        for(flag=k=i-1;k>=0;--k)
            result[k]=a[k]+(k>=j?b[k]:0);
    }
    else if(i<j)
    {
        for(flag=k=j-1;k>=0;--k)
            result[k]=b[k]+(k>=i?a[k]:0);
    }
    else
    {
        for(flag=k=j-1;k>=0;--k)
            result[k]=b[k]+a[k];
    }
   
    for(int s=flag;s>=1;--s)
    {
        if(result[s]>9)
        {
            int t=result[s]%10;
            if(s-1)
                result[s-1]+=result[s]/10;
            else
                result[s-1]=result[s]/10;
            result[s]=t;
        }
    }
   
    for(int s=0;s<=flag;++s)
        cout<<result[s];
    cout<<endl;
    return 0;
}
搜索更多相关主题的帖子: int result cin flag for 
2018-05-30 12:47
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 2楼 九转星河
我刚调了有点bug
2018-05-30 13:28
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
#include <iostream>
using namespace std;

int a[1000],b[1000],result[1000];
int main()
{
    int t,i=1;
    while(cin>>t)
        a[i++]=t;

    cin.clear();
    cin.sync();
   
    int j=1;
    while(cin>>t)
        b[j++]=t;
   
    int k,flag;
    if(i>j)
    {
        int len=i-j;
        for(flag=k=i-1;k>=0;--k)
            result[k]=a[k]+b[k-len];

    }
    else if(i<j)
    {
        int len=j-i;
        for(flag=k=j-1;k>=0;--k)
            result[k]=b[k]+a[k-len];

    }
    else
    {
        for(flag=k=j-1;k>=0;--k)
            result[k]=b[k]+a[k];
    }
   
    for(int s=flag;s>=1;--s)
    {
        if(result[s]>9)
        {
            int t=result[s]%10;
            if(s-1)
                result[s-1]+=result[s]/10;
            else
                result[s-1]=result[s]/10;
            result[s]=t;
        }
    }
   
    for(int s=0;s<=flag;++s)
        cout<<result[s];
    cout<<endl;
    return 0;
}
在原来的代码上做了改动(红色标记)
2018-05-30 17:48
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
学习了
2018-05-31 22:46
快速回复:自己写了一个大数加法,请各位个点意见
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033990 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved