#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)==2)
{
if((!a &&!b) )return 0;
int c=0,ans=0;
for(int i=0;i<11;i++)
{
c=(a%10+b%10+c)>9?1:0;
ans+=c;
a/=10;b/=10;
}
printf("%d\n",ans);
}
return 0;
}
这段程序 是刘汝佳的《算法入门经典》中72页的程序。是要计算两个数相加时需要多少次进位。c=(a%10+b%10+c)>9?1:0;中括号里的+c我刚开始没有看明白什么意思,仔细一想才知道c的作用是判读c是否进位,进位后再在高位上加一。这一点巧妙地运用了两个个位数相加只会产生进位一的常识。if((!a &&!b) )return 0;是指如果a,b同时为零时程序结束,利用例了return 0;当然也可以用While来结束程序。 while(scanf("%d%d",&a,&b)==2&&(a!=0)&&(b!=0))