给出一个加法表达式,但是相加时候是向右进位,即低位进位,问你得到的结果是否正确,输出true||false
直接读入串后把三个数存放到三个数组中,然后依次加每一位,然后低位进位即可
#include<iostream>
using namespace std;
int a[8],b[8],c[8];
char str[1000];
int main()
{
int i,j,k,p;
while(cin>>str)
{
for(i=0;i<8;i++)a[i]=b[i]=c[i]=0;//初始化每一位都是10,为了后来相加时候不够的位补0
for(i=0,p=0;str[i]!='+';p++,i++)
a[p]=str[i]-48;i++;
for(j=0;str[i]!='=';i++,j++)
b[j]=str[i]-48;i++;
for(k=0;str[i];k++,i++)
c[k]=str[i]-48;
for(j=0,i=0,k=0;i<8;i++)
{
if(!a[i]&&!b[i]&&!c[i])k++;
a[i]=a[i]+b[i]+j;
j=a[i]/10;
a[i]%=10;
}
for(i=0;i<8;i++)
if(a[i]!=c[i])
{cout<<"False"<<endl;break;}
if(i==8)cout<<"True"<<endl;
if(k==8)break;
memset(str,NULL,1000);
}
return 0;
}