PAT乙级1074 宇宙无敌加法器

穿精又带淫゛_ 提交于 2020-03-08 21:33:47

题目描述
在这里插入图片描述
代码实现

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[22]={0},b[22]={0},c[22]={0},d[22]={0};
void change(string s,string s1,string s2)
{
    int n=s1.size();
    int m=s2.size();
    int p=s.size();
    for(int i=0;i<p;i++)
    {
        c[i]=s[p-1-i]-'0';
    }
    for(int i=0;i<n;i++)
    {
        a[i]=s1[n-1-i]-'0';
    }
    for(int i=0;i<m;i++)
    {
        b[i]=s2[m-1-i]-'0';
    }
}
int main()
{
    string s1,s2,s3;
    cin>>s1>>s2>>s3;
    change(s1,s2,s3);//将字符串转化为数字并且反过来存在数组中
    int m=s2.size();
    int p=s3.size();
    int k=0;
    int carry=0;//表示进位
        for(int i=0;i<m||i<p;i++)
        {
            int temp=a[i]+b[i]+carry;
            if(c[i]==0)
            {
                c[i]=10;
            }
            d[k++]=temp%c[i];
            carry=temp/c[i];
        }
        if(carry!=0)
        {
            d[k++]=carry;
        }
        while(k-1>=1&&d[k-1]==0)//消除高位多余的0
        {
            k--;
        }
        for(int i=k-1;i>=0;i--)
        {
            cout<<d[i];
        }
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!