小学生算术
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
-
输入
- 输入两个正整数m,n.(m,n,都是三位数) 输出
- 输出m,n,相加时需要进位多少次。 样例输入
-
123 456 555 555 123 594 0 0
样例输出
-
0 3 1
本来循环用的是while(scanf("%d%d",&a,&b),a,b) 但是输出结果的时候只输出了0 0 之前的那一组数,不知道为什么,求解答
01.
#include<iostream>
02.
#include<cstdio>
03.
using
namespace
std;
04.
int
main()
05.
{
06.
int
a,b,a1,a2,a3,b1,b2,b3,r=0,sum=0;
07.
for
(;;)
08.
{
09.
cin>>a>>b;
10.
if
(a==0&&b==0)
11.
return
0;
12.
r=0;sum=0;
13.
a1=a/100;b1=b/100;
14.
a2=a%100/10;b2=b%100/10;
15.
a3=a%10;b3=b%10;
16.
if
(a3+b3>9)
17.
{
18.
r=1;
19.
sum++;
20.
}
21.
if
(a2+b2+r>9)
22.
{
23.
r=1;sum++;
24.
}
25.
if
(a1+b1+r>9)
26.
{
27.
sum++;
28.
}
29.
cout<<sum<<endl;
30.
}
31.
return
0;
32.
}
要不要这么坑,刚才测试了一下,while()循环又能用了……
01.
#include<iostream>
02.
#include<cstdio>
03.
using
namespace
std;
04.
int
main()
05.
{
06.
int
a,b,a1,a2,a3,b1,b2,b3,r=0,sum=0;
07.
while
(
scanf
(
"%d%d"
,&a,&b),a,b)
08.
{
09.
r=0;sum=0;
10.
a1=a/100;b1=b/100;
11.
a2=a%100/10;b2=b%100/10;
12.
a3=a%10;b3=b%10;
13.
if
(a3+b3>9)
14.
{
15.
r=1;
16.
sum++;
17.
}
18.
if
(a2+b2+r>9)
19.
{
20.
r=1;sum++;
21.
}
22.
if
(a1+b1+r>9)
23.
{
24.
sum++;
25.
}
26.
cout<<sum<<endl;
27.
}
28.
return
0;
29.
}