小学生算术
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
-
输入
- 输入两个正整数m,n.(m,n,都是三位数) 输出
- 输出m,n,相加时需要进位多少次。 样例输入
-
123 456 555 555 123 594 0 0
样例输出
-
0 3 1
-
两种方法:第一不使用字符串:
-
#include<stdio.h> int main() { int m,n; int gewei,shiwei,baiwei; int sum; while(scanf("%d%d",&m,&n)&&(m!=0&&n!=0)) { sum=0; gewei=m%10+n%10; shiwei=m%100/10+n%100/10; baiwei=m/100+n/100; if(gewei>=10) { sum++;shiwei++; } if(shiwei>=10) { sum++;baiwei++; } if(baiwei>=10) sum++; printf("%d\n",sum); } return 0; }
-
第二:用字符串有点啰嗦...但这种思维对大数四则运算有帮助的。
-
#include<stdio.h> #include<string.h> int main() { int i,j; int sum,t; int a1[5],b1[5]; char a[5],b[5]; while(scanf("%s %s",a,b)&&(a[0]!='0'||b[0]!='0')) { memset(a1,0,sizeof(a1)); memset(b1,0,sizeof(b1)); sum=0; for(i=0;i<3;i++) { a1[i]=a[i]-'0'; b1[i]=b[i]-'0'; } t=0; for(i=2;i>=0;i--) { a1[i]+=b1[i]+t; t=0; if(a1[i]>=10) { t=1; sum++; } } printf("%d\n",sum); } }