小学生算术
小学生算术
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
-
输入
- 输入两个正整数m,n.(m,n,都是三位数) 输出
- 输出m,n,相加时需要进位多少次。 样例输入
-
123 456 555 555 123 594 0 0
样例输出
-
0 3 1
-
自己写的,有问题,当999+999时,进位应该是3次,但编程算的是1次,但是居然通过了,不可思议
-
#include<stdio.h> int main() { int m, n, d, a, b; while (scanf("%d%d", &m, &n) && n, m) { d = 0; for (int i = 0; i < 3 ; i++) { a = m % 10; m = m / 10; b = n % 10; n = n / 10; if (a + b >= 10) { d++; m = m + 1; } } printf("%d\n", d); } }
-
这是最优解,这个计算的没有任何问题:
-
<pre class="cpp" name="code">#include<stdio.h> int main() { int a,b,c,d,e,f,n,m,i; for(;;) { scanf("%d%d",&n,&m); if(n==0&&m==0) return 0; else { i=0; a=n/100;b=n%100/10;c=n%10; d=m/100;e=m%100/10;f=m%10; if(c+f>=10) {i+=1;b+=1;} if(b+e>=10) {i+=1;a+=1;} if(a+d>=10) {i+=1;} printf("%d\n",i); } } return 0; }