void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

给出一个加法表达式,但是相加时候是向右进位,即低位进位,问你得到的结果是否正确,输出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;
}
posted on 2011-04-17 14:16  void-man  阅读(340)  评论(0)    收藏  举报