acm 南阳理工 74题怎么做啊
#include <iostream>
using namespace std;
int main()
{
int i;
char a[3], b[3];
int c[3], d[3];
while((cin>>a>>b) && ((a[0] - '0')||(b[0] - '0')))
{
int count, d;
count = 0;
d = 0;
for(i = 0;i<3; i++)
{
c[i] = a[i] - '0';
d[i] = b[i] - '0';
}
for(i = 2;i>=0; i--)
{
if((c[i] + d[i] + d)/10 == 1)
{count ++ ; d ++ ;}
}
cout<<count<<endl;
}
return 0;
}
为什么我的不对?
假设你上面是对的
for(i = 2;i>=0; i--)//这个地方也不对,因为在第三位的时候d会等于2然后两边相加只要等于8就会被进位,d不应该这样加
{
if((c[i] + d[i] + d)/10 == 1)
{count ++ ; d ++ ;}
if((c[i]+d[i]+(count>0?1:0))>10){count++;}这样也不对,第一位进位了.第二位没进第三位等于9时也会被算成进位
if((c[i]+d[i]+flag)>10){count++;flag=1}else{flag=0}//这样应该就没问题了``
}
c[1]+d[1]