用字符串输入加数
string az,bz;
cin>>az>>bz;
reverse(az.begin(),az.end());
reverse(bz.begin(),bz.end());
将字符串转化为int型
for(int i=0;i<strlen(az.c_str());i++)
{
a[i]=(int)az[i]-(int)'0';
}
for(int i=0;i<strlen(bz.c_str());i++)
{
b[i]=(int)bz[i]-(int)'0';
}
用数组h储存结果,用if语句控制进位
int h[201];
memset(h,0,sizeof(h));
for(int i=0;i<200;i++)
{
h[i]+=a[i]+b[i];
if(h[i]>=10)
{
h[i+1]++;
h[i]-=10;
}
}
用布尔型变量l控制去除前导0,输出
bool l=false;
for(int i=200;i>=0;i--)
{
if(h[i]!=0)
l=true;
if(l==true)
cout<<h[i];
}
结果可以为0
if(l==false)
cout<<0;
完整代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string az,bz;
cin>>az>>bz;//低位在后
reverse(az.begin(),az.end());//交换高低位
reverse(bz.begin(),bz.end());
int a[200],b[200];//必须是200,不能用字符串的长度,会越界
memset(a,0,sizeof(a));//初始化
memset(b,0,sizeof(b));
for(int i=0;i<strlen(az.c_str());i++)//转化为int类型
{
a[i]=(int)az[i]-(int)'0';
}
for(int i=0;i<strlen(bz.c_str());i++)
{
b[i]=(int)bz[i]-(int)'0';
}
int h[201];//储存结果
memset(h,0,sizeof(h));
for(int i=0;i<200;i++)//运算
{
h[i]+=a[i]+b[i];
if(h[i]>=10)//进位
{
h[i+1]++;
h[i]-=10;
}
}
bool l=false;//是否去掉了前导0
for(int i=200;i>=0;i--)//倒着输出
{
if(h[i]!=0)
l=true;
if(l==true)
cout<<h[i];
}
if(l==false)//和可以为0
cout<<0;
return 0;
}